我希望能夠使用多處理庫中的Values模塊來跟蹤數據。據我所知,當談到Python中的多處理時,每個進程都有自己的副本,所以我不能編輯全局變量。我想能夠使用值來解決這個問題。有誰知道我可以如何將值數據傳遞到池功能?如何使用Python中的多處理池中的值
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'變量傳遞給所有的進程。 –
@TomDalton我剛剛使用itertools更新了代碼,將數據變量傳遞給hello函數,現在我得到一個錯誤,我不知道它爲什麼發生。 – user2313602
爲什麼不是從'hello()'返回數據呢?這就是「地圖」的全部內容。 –