Ho casi molto semplici in cui il lavoro da svolgere può essere suddiviso e distribuito tra i lavoratori. Ho provato un esempio molto semplice multiprocessing da here:Stesso risultato in diversi operatori nel multiprocessing
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
Il programma sopra produce il seguente output:
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]
Perché lo stesso numero casuale sempre stampato? (Ho 4 cpu nella mia macchina). È questo il modo migliore/più semplice per andare avanti?
possibile duplicato [Uso multiprocessore pitone con seme casuale diverso per ogni processo] (http://stackoverflow.com/questions/9209078/using-python-multiprocessing-with-different- random-seed-for-each-process) –
Non esiste un modo per impostare il numero casuale per ogni processo che potrebbe utilizzare numeri casuali? Diciamo che uno usa il modulo random, numpy, scipy, tensorflow e chissà cos'altro. È l'unico modo per assicurarsi che il processo abbia un seme casuale diverso per passare attraverso ciascuno di questi e impostare manualmente lo stato? –