Ответ
В Python для работы с многопоточностью чаще всего используют:
threading— стандартная библиотека для создания и управления потоками. Из-за GIL подходит для I/O-bound задач, но не для CPU-bound.
import threading
def task():
print("Thread running")
thread = threading.Thread(target=task)
thread.start()
thread.join()
concurrent.futures— высокоуровневый интерфейс для пула потоков (ThreadPoolExecutor) или процессов (ProcessPoolExecutor).
from concurrent.futures import ThreadPoolExecutor
with ThreadPoolExecutor() as executor:
executor.submit(lambda: print("Task executed"))
-
asyncio— для асинхронного I/O (не совсем многопоточность, но решает схожие задачи). -
multiprocessing— для CPU-bound задач (использует процессы, обходит GIL). -
queue— для безопасного обмена данными между потоками.
Для сложных сценариев можно использовать gevent или celery (распределённые задачи).