[英]How to use multiprocessing in python?
我正在嘗試執行一項任務,該任務是向列表分配內容。 我將通過多處理來實現。 在完成所有任務之后,我想總結所有這些。 但是,我得到的不是我所期望的。 你知道為什么會這樣嗎? 下面只是一個示例代碼。 結果應為45,而不是0。
from multiprocessing import Process
def a(b):
for i in range(10):
b[i] = i
b = [0 for _ in range(10)]
p = Process(target=a, args=(b,))
p.start()
p.join()
print sum(b)
原因是因為列表b
在單獨的過程中發生了變異。 當進程加入時,原始進程對b
的突變一無所知。 解決此問題的方法是讓列表由multiprocessing.Manager
管理。
from multiprocessing import Process,Manager
def a(b):
for i in range(10):
b[i] = i
b = [0 for _ in range(10)]
#create a manager to manage access to `b`
manager = Manager()
b = manager.list(b)
p = Process(target=a, args=(b,))
p.start()
p.join()
print sum(b)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.