Meine Arbeit sollte parallele Techniken verwenden, und ich bin ein neuer Benutzer von Python. Ich frage mich also, ob Sie etwas Material über Python multiprocessing
und subprocess
Module teilen könnten . Was ist der Unterschied zwischen diesen beiden?
python
subprocess
multiprocessing
Jun HU
quelle
quelle
greenlets
- aber vermeiden Sie diese, bis Sie die Antworten auf Ihr OP verstanden habenAntworten:
Mit dem
subprocess
Modul können Sie andere Programme ausführen und steuern. Alles, was Sie mit der Befehlszeile auf dem Computer beginnen können, kann mit diesem Modul ausgeführt und gesteuert werden. Verwenden Sie diese Option, um externe Programme in Ihren Python-Code zu integrieren.Mit dem
multiprocessing
Modul können Sie in Python geschriebene Aufgaben auf mehrere Prozesse aufteilen, um die Leistung zu verbessern. Es bietet eine API, die demthreading
Modul sehr ähnlich ist . Es bietet Methoden zum Teilen von Daten über die von ihm erstellten Prozesse hinweg und erleichtert die Verwaltung mehrerer Prozesse, um Python-Code (viel) auszuführen. Mit anderen Worten,multiprocessing
Sie können mehrere Prozesse nutzen, um Ihre Aufgaben schneller zu erledigen, indem Sie Code parallel ausführen.quelle
Wenn Sie ein externes Programm aufrufen möchten (insbesondere eines, das nicht in Python geschrieben wurde), verwenden Sie
subprocess
.Wenn Sie eine Python-Funktion in einem Unterprozess aufrufen möchten, verwenden Sie
multiprocessing
.(Wenn das Programm in Python geschrieben ist, aber auch importierbar ist, würde ich versuchen, seine Funktionen mit aufzurufen
multiprocessing
, anstatt es extern durch aufzurufensubprocess
.)quelle
subprocess.call
s starten . Jedes moderne Betriebssystem sollte die Prozesse gleichzeitig auf den verfügbaren Prozessoren ausführen. Sie können die Unterprozesse auch aus einem Thread-Pool heraus starten , um die Anzahl der gleichzeitig gestarteten Unterprozesse zu begrenzen.Der Unterprozess erzeugt neue Prozesse, aber abgesehen von stdin / stdout und allen anderen APIs, die das andere Programm möglicherweise implementiert, haben Sie keine Möglichkeit, mit ihnen zu kommunizieren. Der Hauptzweck besteht darin, Prozesse zu starten, die vollständig von Ihrem eigenen Programm getrennt sind.
Multiprocessing erzeugt auch neue Prozesse, aber sie führen Ihren Code aus und sind so konzipiert, dass sie miteinander kommunizieren. Sie verwenden es, um Aufgaben innerhalb Ihres eigenen Programms auf mehrere CPU-Kerne aufzuteilen.
quelle