Multi-Prozess, machen wir es einfach. Aber ich war ein bisschen im Weg und konnte doch keine Zeit sparen. .. ?? ??
Es ist unmöglich. .. .. .. .. Normalerweise für Satz. .. .. ..
Ich möchte, dass eine solche Person es liest.
Verwenden Sie ProcessPoolExecutor und functools.partial, die Standardausrüstung von Python, um bequem parallele Berechnungen in mehreren Prozessen durchzuführen. Was Sie verwenden können, ist ein Verlust, wenn Sie es nicht verwenden, richtig? ??
test.py
def my_function(arg1):
for i in range(100):
'Es ist ein sehr schwerer Prozess.'
result_list.append(some_operation(i))
if __name__ == "__main__":
my_function()
Du schreibst so, ohne an irgendetwas zu denken, oder? In einem solchen Fall gibt es 100 Prozesse, aber ich möchte problemlos parallele Prozesse in mehreren Prozessen ausführen. .. ..
Schreiben Sie das vorherige `` `my_function``` so.
test.py
def my_function(index, arg1):
return some_operation(index)
Mit anderen Worten, anstatt eine Schleife zu schreiben, ist es so, als würde man einen Index übergeben und einzeln verarbeiten.
Schreiben Sie zunächst wie folgt.
test.py
import os
from concurrent.futures import ProcessPoolExecutor
max_workers = os.cpu_count() or 4
print('=====MAX WORKER========')
print(max_workers)
with ProcessPoolExecutor(max_workers=max_workers) as executor:
max_workers
Speichert die Anzahl der verfügbaren Prozesse. Wenn es in diesem Beispiel nicht gespeichert werden kann4
Wird eingegeben.
Als nächstes schreiben Sie so.
test.py
import functools
with ProcessPoolExecutor(max_workers=max_workers) as executor:
result_list = list(executor.map(functools.partial(my_function, arg1), range(100)))
executor.shutdown(wait=True)
Nur das.
Um ein wenig zu erklären, die Operationen, die ich verwendet habe, um in eine Schleife zu schreiben und an `` `result_listanzuhängen
my_funtion```Durch Übergeben des Index an wird die Operation an jedem Index in mehreren Prozessen ausgeführt.
functools.Teilweise ist eine Funktion (meine_Ändern Sie einige der Argumente der Funktion) und geben Sie jede Funktion mit unterschiedlichen Argumenten als Funktionsiterator zurück. Zu diesem Zeitpunkt mein_function(index, arg1)Wie in gibt es nur ein Argument, das geändert werden kann, nämlich das erste Argument der Funktion.**Hinweis!!**
Darüber hinaus wird gemäß der ausführbaren Datei der Index, der die erste Variable ist, die an diese "my_function" übergeben wird, in jedem der Iteratorbereiche (100) parallel ausgeführt, und jedes Ausführungsergebnis wird in der Liste gespeichert.
Dies ist genau das gleiche wie beim Anhängen an `` `result_list``` in jeder Schleife.
## Zusammenfassung
Multiprozess, den Sie ausführen möchten, um auch nur wenig Zeit zu sparen. Es ist schmerzhaft, wenn es schwierig ist, mehrere Prozesse zu schreiben und sich viel Zeit zu nehmen. .. ..
Dieses Mal habe ich einen Multi-Prozess eingeführt, den Sie ganz einfach nur mit der Standard-Python-Bibliothek schreiben können! !!
Ende.
Recommended Posts