Ich habe ein Python-Skript, um einige externe Befehle mit dem osprocess-Modul auszuführen. Aber einer dieser Schritte benötigt viel Zeit und ich würde es gerne separat ausführen. Ich muss sie starten, prüfen, ob sie fertig sind und dann den nächsten Befehl ausführen, der nicht parallel ist. Mein Code ist ungefähr so:
%Vor%Für Ihr Beispiel wollen Sie nur parallel shell-out - Sie brauchen dafür keine Threads.
Verwenden Sie den Popen
-Konstruktor im subprocess
-Modul: Ссылка
Sammeln Sie die Popen
-Instanzen für jeden von Ihnen erstellten Prozess und dann wait()
, um sie zu beenden:
Sie können damit durchkommen (im Gegensatz zur Verwendung der Module multiprocessing
oder threading
), da Sie nicht wirklich daran interessiert sind, dass diese interoperieren - Sie möchten nur, dass das Betriebssystem sie parallel ausführt und sicher ist Sie sind alle fertig, wenn Sie die Ergebnisse kombinieren ...
Das parallele Ausführen von Aufgaben kann auch mithilfe mehrerer Prozesse in Python implementiert werden. Ich hatte vor einiger Zeit einen Blogbeitrag zu diesem Thema geschrieben, den Sie hier finden können
Grundsätzlich besteht die Idee darin, "Worker-Prozesse" zu verwenden, die unabhängig Jobs aus einer Warteschlange abrufen und diese Jobs dann abschließen.
Funktioniert ziemlich gut in meiner Erfahrung.
Sie können es mit Threads tun. Dies ist sehr kurz und (nicht getestet) Beispiel mit sehr hässlich if-else auf, was Sie tatsächlich im Thread tun, aber Sie können Ihre eigenen Arbeiter Klassen schreiben ..
%Vor%Tags und Links python