Heim > Backend-Entwicklung > Python-Tutorial > Wie erreicht man eine echte parallele Bash-Prozessausführung in Python, ohne auf Threads angewiesen zu sein?

Wie erreicht man eine echte parallele Bash-Prozessausführung in Python, ohne auf Threads angewiesen zu sein?

Patricia Arquette
Freigeben: 2024-10-27 05:40:03
Original
270 Leute haben es durchsucht

How to Achieve True Parallel Bash Process Execution in Python Without Relying on Threads?

Wie erzeugt man parallele Bash-Prozesse mit Pythons Threading- und Unterprozessmodulen?

Ursprüngliche Frage:

Wie kann ich die Threading- und Subprozessmodule von Python verwenden, um parallele Bash-Prozesse zu erstellen? Eine aufeinanderfolgende Ausführung erfolgt anstelle einer parallelen Ausführung, wenn Threads initiiert werden, wie in dieser Stack Overflow-Antwort beschrieben.

Antwort:

Entgegen der ursprünglichen Annahme sind Threads nicht erforderlich Parallele Ausführung des Bash-Unterprozesses. Die folgenden Techniken bieten verschiedene Optionen:

Direkte Ausführung (ohne Threads):

<code class="python">from subprocess import Popen

commands = ['date; ls -l; sleep 1; date', ...]
processes = [Popen(cmd, shell=True) for cmd in commands]</code>
Nach dem Login kopieren

Begrenzte gleichzeitige Befehle unter Verwendung von Threads mit multiprocessing.dummy.Pool:

<code class="python">from functools import partial
from multiprocessing.dummy import Pool
from subprocess import call

pool = Pool(2)
for i, returncode in enumerate(pool.imap(partial(call, shell=True), commands)):
    ...</code>
Nach dem Login kopieren

Gleichzeitige untergeordnete Prozesse ohne Prozesspool begrenzen:

<code class="python">from subprocess import Popen
from itertools import islice

max_workers = 2
processes = (Popen(cmd, shell=True) for cmd in commands)
running_processes = list(islice(processes, max_workers))
while running_processes:
    ...</code>
Nach dem Login kopieren

Hinweis für Unix-Systeme:

Vermeiden Sie auf Unix-Plattformen die Besetztschleife, indem Sie os.waitpid(-1, 0) blockieren, um auf das Beenden eines untergeordneten Prozesses zu warten.

Das obige ist der detaillierte Inhalt vonWie erreicht man eine echte parallele Bash-Prozessausführung in Python, ohne auf Threads angewiesen zu sein?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage