我有非常簡單的情況,即待完成的工作可以分解並分配給工人。我試圖從here一個非常簡單的多處理例如:多處理中不同工人的相同輸出
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
上述程序產生以下輸出:
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]
爲什麼得到印刷相同的隨機數? (我的機器有4個cpus)。這是最好的/最簡單的方法嗎?
[用不同的隨機種子使用Python多處理對於每個過程(可能重複http://stackoverflow.com/questions/9209078/using-python-multiprocessing-with-different- random-seed-for-each-process) – 2015-09-14 15:46:34
有沒有辦法爲每個可能使用隨機數的進程設置隨機數?說一個人使用模塊隨機,numpy,scipy,tensorflow和誰知道還有什麼。是唯一的方法來確保過程有不同的隨機種子通過其中每一個並手動設置狀態? –