Multithreading in Python
In Python kann Multithreading verwendet werden, um Aufgaben auf mehrere Threads aufzuteilen. Hier ist ein vereinfachtes Beispiel:
Python 3.3:
from multiprocessing.dummy import Pool as ThreadPool
my_array = [1, 2, 3]
pool = ThreadPool(4)
results = pool.map(my_function, my_array)
Frühere Python-Versionen:
Um mehrere Argumente zu übergeben, halten Dies:
my_function = lambda x, y: x * y
list_a = [1, 2, 3]
list_b = [4, 5, 6]
pool = ThreadPool(4)
results = pool.starmap(my_function, zip(list_a, list_b))
Beschreibung:
- Map ist eine Funktion, die auf jedes Element in einer Sequenz eine andere Funktion anwendet und die Ergebnisse in a speichert Liste.
Implementierung:
- Multiprocessing.dummy stellt eine parallele Version der Kartenfunktion bereit.
- Es verwendet stattdessen Threads von Prozessen, wodurch es für E/A-intensive Aufgaben geeignet ist.
- Die Pool-Klasse erstellt eine Reihe von Arbeitsthreads, die ausgeführt werden die Kartenfunktion parallel.
Beispiel:
- Der bereitgestellte Code erstellt einen Pool mit 4 Threads.
- Es verwendet die Map-Funktion, um eine einfache Funktion auf eine Liste von URLs anzuwenden.
- Die Ergebnisse werden in einer Liste zurückgegeben, sobald alle Threads ihre Arbeit abgeschlossen haben Aufgaben.
Zusätzliche Hinweise:
- Erwägen Sie bei CPU-intensiven Aufgaben die Verwendung mehrerer Prozesse anstelle von Threads.
- Übergeben Mehrere Argumente für eine Funktion in Map erfordern eine Python-Version von 3.3 oder höher. Verwenden Sie für frühere Versionen die in der Antwort erwähnte Problemumgehung.
Das obige ist der detaillierte Inhalt vonWie kann ich Multithreading in Python effektiv für die parallele Aufgabenausführung nutzen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!
Stellungnahme: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