new test for mp
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
from __future__ import absolute_import
|
||||
from __future__ import division
|
||||
from __future__ import print_function
|
||||
|
||||
import multiprocessing
|
||||
import queue
|
||||
|
||||
|
||||
running = multiprocessing.Value('i', 1)
|
||||
request = multiprocessing.JoinableQueue()
|
||||
response = multiprocessing.Queue(1)
|
||||
|
||||
work=[]
|
||||
|
||||
def worker(request, response):
|
||||
#try:
|
||||
param = request.get(timeout=0.1)
|
||||
if param.empty()
|
||||
# Imagine heavy computation here.
|
||||
#except queue.Empty:
|
||||
# To check running flag.
|
||||
response.put("work_done")
|
||||
else:
|
||||
result = param ** 2
|
||||
response.put(result)
|
||||
|
||||
|
||||
def main():
|
||||
for n in range(10):
|
||||
work.append(n)
|
||||
process = multiprocessing.Process(target=worker, args=(request, response))
|
||||
process.start()
|
||||
for i in work:
|
||||
print("Queueing {}".format(i))
|
||||
request.put(i)
|
||||
result = response.get()
|
||||
#if result != "work_done":
|
||||
while result != "work_done":
|
||||
print('Result', result)
|
||||
process.join()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
||||
Reference in New Issue
Block a user