Python - multiprocessing.Value不返回asigned值

时间:2014-12-13 16:49:37

标签: python python-2.7

我在两个文件中编写了代码。为了指出问题,我正在为代码做总结

first.py

中的

def sim(self, x, y, num):
        sim = 0.999999
        num.value = sim

second.py

num = Value('d', 0.0)

p = Process(target=first.sim, args=(int(d * (k-1)), txtlen, num))                       
processes.append(p)
p.start()   

print num.value

我希望输出应为0.999999。但它只返回0.0。我该如何解决这个问题?有人可以帮忙吗?

我的参考:16.6.1.4. Sharing state between processes

1 个答案:

答案 0 :(得分:2)

我使用此代码似乎有效:

from multiprocessing import Process, Value

class First(object):
    def sim(self, x, y, num):
        sim = 0.999999
        num.value = sim


num = Value('d', 0.0)
first = First()
p = Process(target=first.sim, args=(0, 0, num))
p.start()
p.join()

print num.value

好像您的流程无法完成,所以在访问p.join()之前必须确保使用num.value完成