我有以下代码(它是我程序中的片段):
from multiprocessing import Process, Manager, cpu_count, Pool, Value, Lock
def grab_future_products(p, test):
print("Starting procces %s" % p)
if __name__ == "__main__": # Main program
n = 4
test = Value('i', 0)
pool = Pool(processes=n) # n processes per every CPU core
for i in range(n):
pool.apply_async(grab_future_products, args=(i, test))
pool.close()
pool.join()
如果我用python test.py
运行它,就没有输出,没有错误,什么都没有。
我想使用变量test作为所有进程之间的共享整数,这样我就可以在另一个进程中执行如下操作:
if test.value == X:
break
但有趣的是,如果我用args=(i, 1))
替换args=(i, test))
,它将按预期工作。
所以我的问题是,为什么我不能将Value()
对象传递到进程中?我怎样才能解决这个问题?
非常感谢。你知道吗
诀窍是使用multiprocessing.Manager,这里也提到了:Sharing a result queue among several processes:
相关问题 更多 >
编程相关推荐