実行する作業を分割して作業者間で分散できる非常に単純なケースがあります。なぜ、同じ乱数がマルチプロセッシングで異なるワーカーで同じ出力が発生する
Input : [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
0 7
1 7
2 7
5 7
3 7
4 7
6 7
7 7
8 6
9 6
Pool : [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
を印刷きている:
import multiprocessing
import numpy as np
import time
def do_calculation(data):
rand=np.random.randint(10)
print data, rand
time.sleep(rand)
return data * 2
if __name__ == '__main__':
pool_size = multiprocessing.cpu_count() * 2
pool = multiprocessing.Pool(processes=pool_size)
inputs = list(range(10))
print 'Input :', inputs
pool_outputs = pool.map(do_calculation, inputs)
print 'Pool :', pool_outputs
上記のプログラムは次の出力を生成します。私はhereから非常に単純なマルチプロセッシングの例を試してみましたか? (私のマシンには4つのCPUがあります)。これは最善の/最も簡単な方法ですか?
[プロセスごとに異なるランダムシードを有する使用Pythonのマルチプロセッシング(の可能重複http://stackoverflow.com/questions/9209078/using-python-multiprocessing-with-different- random-seed-for-each-process) –
乱数を使用するプロセスごとに乱数を設定する方法はありませんか?モジュールランダム、numpy、scipy、tensorflowを使用し、他に何がわかっているとします。プロセスがそれぞれのランダムなシードを持っていることを確認する唯一の方法は、これらのそれぞれを通過して手動で状態を設定することですか? –