受here提供的示例的启发!我需要在池调用的函数中使用队列,但在函数中将其清空。 以下代码似乎有效,但不能正确关闭池。我的错误在哪里?
我正在使用python 2.7常规版(用于inkscape扩展)
import multiprocessing as mp
def f(x):
ret=1000*x
print(str(x)+" starting ")
while not f.q.empty():
z=f.q.get()
ret+=z
print (str(x)+" do "+str(z))
print(str(x)+" done ")
return ret
def f_init(q):
f.q = q
def main():
cpus=mp.cpu_count()
q = mp.Queue()
x=0
while x<20:
q.put(x)
x+=1
p = mp.Pool(cpus, f_init, [q])
results = p.imap(f, range(cpus))
p.close()
print("results :")
for bResult in results:
print(bResult)
if __name__ == '__main__':
main()
此代码显示所有过程均定期进行,但主程序保持暂停状态。 print(bResult)
永远不会发生