Python Threading Modul
Das threading-Modul erlaubt dir, mehrere Threads im selben Prozess auszuführen und sie mit Sperren zu koordinieren.
import threading
Threads sind nützlich, wenn auf E/A gewartet wird, etwa bei Netzwerkanfragen oder Dateioperationen. Sie sind normalerweise nicht der beste Weg, CPU-lastigen Python-Code zu beschleunigen.
Einen Thread starten
import threading
def worker():
print('working')
thread = threading.Thread(target=worker)
thread.start()
thread.join()
working
start() startet den Thread. join() wartet, bis er beendet ist, bevor das Hauptprogramm weiterläuft.
Argumente übergeben
import threading
def greet(name):
print(f'hello {name}')
thread = threading.Thread(target=greet, args=('Ada',))
thread.start()
thread.join()
hello Ada
Verwende args für Positionsargumente und kwargs für Schlüsselwortargumente.
Eine Sperre verwenden
Sperren helfen, gemeinsam genutzten Zustand zu schützen.
import threading
counter = 0
lock = threading.Lock()
with lock:
counter += 1
print(counter)
1
Mehrere Threads ausführen
import threading
results = []
lock = threading.Lock()
def worker(number):
with lock:
results.append(f'worker {number}')
threads = []
for number in range(3):
thread = threading.Thread(target=worker, args=(number,))
threads.append(thread)
thread.start()
for thread in threads:
thread.join()
print(sorted(results))
['worker 0', 'worker 1', 'worker 2']
Die tatsächliche Abschlussreihenfolge kann variieren, weil Threads parallel laufen. Daher sortiert dieses Beispiel das Ergebnis vor dem Ausgeben.