Verwenden Sie beim Erstellen eines Pools die Initialisierungs- und initargs-Argumente, um in allen untergeordneten Prozessen eine globale Definition zu definieren.
Zum Beispiel:
%Vor% Dieser Code gibt die Zahlen 0-3 in aufsteigender Reihenfolge aus (die Reihenfolge, in der die Jobs gesendet wurden), da er die Sperre verwendet. Kommentiere die with lock:
-Zeile aus, um sie in absteigender Reihenfolge auszugeben.
Diese Lösung funktioniert sowohl unter Windows als auch unter Unix. Da sich Prozesse jedoch auf Unix-Systemen ausweiten können, muss Unix nur globale Variablen im Modulbereich deklarieren. Der untergeordnete Prozess erhält eine Kopie des Speichers des übergeordneten Elements, der das noch funktionierende Sperrobjekt enthält. Daher wird der Initialisierer nicht unbedingt benötigt, aber es kann helfen zu dokumentieren, wie der Code arbeiten soll. Wenn Multiprocessing in der Lage ist, Prozesse durch Forking zu erstellen, funktioniert das Folgende auch.
%Vor%Verwende einen globalen Semaphor und erwirb ihn, wenn du auf eine Ressource zugreifst. Zum Beispiel:
%Vor%Dieses Programm beendet jede Sekunde nur zwei Jobs, weil die anderen Threads auf den Semaphor warten.
Tags und Links python python-multiprocessing