将值(" i",0)传递给进程

时间:2016-03-31 18:24:58

标签: python python-2.7

我有这段代码(这是我程序中的代码段):

python test.py

如果我用if test.value == X: break 运行它,我没有输出,没有错误,没有任何错误。 我想在所有进程之间使用变量测试作为共享集成器,因此我可以在另一个进程中执行以下操作:

args=(i, test))

但有趣的是,如果我将args=(i, 1))替换为Value(),它将按预期工作。 所以我的问题是,为什么我不能将{{1}}对象传递给进程?我怎么能解决这个问题呢? 非常感谢。

1 个答案:

答案 0 :(得分:1)

诀窍是使用multiprocessing.Manager,如此处所述:Sharing a result queue among several processes

from multiprocessing import Process, Manager, cpu_count, Pool, Value, Lock

def grab_future_products(p, test):

    print("Starting procces %s, value=%i" % (p, test.value))

if __name__ == "__main__": # Main program
    n = 4
    pool = Pool(processes=n) # n processes per every CPU core
    m = Manager()
    v = m.Value('i', 0)
    for i in range(n):
        res=pool.apply_async(grab_future_products, args=(i, v))
    pool.close()
    pool.join()