So führen Sie parallele Programme in Python aus

8

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%     
user1598231 14.08.2012, 14:04
quelle

3 Antworten

6

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:

%Vor%

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 ...

    
Daren Thomas 14.08.2012 14:45
quelle
2

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.

    
Sachin 14.08.2012 14:38
quelle
0

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%     
Stanislav Heller 14.08.2012 14:29
quelle

Tags und Links