可能性の重複をマルチプロセッシング:私は多くのコアを持つコンピュータを使用していますし、パフォーマンス上の利点のために、私は本当につ以上を使用する必要があります
Python multiprocessing global variable updates not returned to parentグローバル変数とPythonは
。コードのこれらのビットは、私が期待して何をしない理由しかし、私は困惑している:
from multiprocessing import Process
var = range(5)
def test_func(i):
global var
var[i] += 1
if __name__ == '__main__':
jobs = []
for i in xrange(5):
p = Process(target=test_func,args=(i,))
jobs.append(p)
p.start()
print var
と同様に
from multiprocessing import Pool
var = range(5)
def test_func(i):
global var
var[i] += 1
if __name__ == '__main__':
p = Pool()
for i in xrange(5):
p.apply_async(test_func,[i])
print var
私は結果が[1, 2, 3, 4, 5]
ことを期待したが結果は[0, 1, 2, 3, 4]
です。
プロセスでグローバル変数を使用する際に欠点があります。これはやり方ですか?このように変数を変更しようとするのは避けてください。
この質問を見 http://stackoverflow.com/questions/659865/python-multiprocessing-sharing-a-large-read-only-object-between-processes – 8bitwide
あなたからこれらのコードスニペットを実行していますスクリプトを実行したり、Pythonコンソール内で実行したりできますか? –
マルチプロセッシングマネージャでリストを管理する必要があります。 – mgilson