我希望能够使用multiprocessing库中的Values模块来跟踪数据。据我所知,当涉及到Python中的多进程操作时,每个进程都有自己的副本,因此我不能编辑全局变量。我想使用Values来解决这个问题。有谁知道我如何将Values数据传递到池化函数中?
from multiprocessing import Pool, Value
import itertools
arr = [2,6,8,7,4,2,5,6,2,4,7,8,5,2,7,4,2,5,6,2,4,7,8,5,2,9,3,2,0,1,5,7,2,8,9,3,2,]
def hello(g, data):
data.value += 1
if __name__ == '__main__':
data = Value('i', 0)
func = partial(hello, data)
p = Pool(processes=1)
p.map(hello,itertools.izip(arr,itertools.repeat(data)))
print data.value
这里是我遇到的运行时错误:
RuntimeError: Synchronized objects should only be shared between processes through inheritance
有人知道我做错了什么吗?
data
变量传递到所有的进程中。 - Tom Daltonhello()
返回数据呢?这正是map
的全部意义所在。 - Roland Smith