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.