我写了一个小的虚拟程序,它可以得到一个列表输入
[1, 2, 3, 4]
那么输出应该是
{1:2, 2:4, 3:6, 4:8}
当我打印输出是
{1: 2}
{2: 4}
{3: 6}
{4: 8}
True
True
True
True
{}
但不知怎的,队列是空的。你知道吗
import Queue
import math
import multiprocessing
out_q = Queue.Queue()
def mp_factorizer(nums):
global out_q
def worker(num):
outdict = {}
outdict[num] = num * 2
print outdict
out_q.put(outdict)
procs = []
for num in nums:
p = multiprocessing.Process(target=worker,args=(num,))
procs.append(p)
p.start()
resultdict = {}
for p in procs:
p.join()
for i in range(len(nums)):
print out_q.empty()
if not out_q.empty():
resultdict.update(out_q.get())
# Wait for all worker processes to finish
return resultdict
di = mp_factorizer([1, 2, 3, 4])
print di
不要对队列对象使用全局。它不在进程之间共享。改为使用
multiprocessing.Queue
,并将其作为参数传入,以便对其进行管理:相关问题 更多 >
编程相关推荐