Ich habe sehr einfache Fälle, in denen die Arbeit, die getan werden soll, aufgeteilt werden und unter Arbeitern verteilt werden kann. Ich habe versucht, ein sehr einfaches Beispiel Multiprozessing von here:Gleiche Ausgabe in verschiedenen Arbeitern im 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
Das obige Programm erzeugt folgende Ausgabe:
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]
Warum ist die gleiche Zufallszahl gedruckt zu werden? (Ich habe 4 CPUs in meiner Maschine). Ist das der beste/einfachste Weg?
möglich Duplikat [Python Multiprocessing mit unterschiedlichem Zufallskeim für jeden Prozess] (http://stackoverflow.com/questions/9209078/using-python-multiprocessing-with-different- random-seed-for-proach-Prozess) –
Gibt es keine Möglichkeit, die Zufallszahl für jeden Prozess festzulegen, der Zufallszahlen verwenden könnte? Sagen wir, man benutzt das Modul zufällig, numpy, scipy, tensorflow und wer weiß was noch. Ist der einzige Weg, um sicherzustellen, dass der Prozess eine andere zufällige Saat hat, um durch jeden von diesen zu gehen und den Staat manuell einzustellen? –