簡體   English   中英

如何在python中使用多重處理?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM