Какие методы реализации параллелизма и конкурентности существуют в Python?
Answer from AI
sobes.tech AI
В Python для реализации параллелизма и конкурентности используются несколько основных методов:
-
Модуль threading — позволяет создавать потоки (threads) внутри одного процесса. Потоки разделяют память, но из-за GIL (Global Interpreter Lock) в CPython одновременное выполнение байткода ограничено, поэтому threading эффективен для задач с вводом-выводом, но не для CPU-bound.
-
Модуль multiprocessing — создает отдельные процессы, каждый со своей памятью, обходя ограничение GIL. Подходит для CPU-интенсивных задач, но требует межпроцессного взаимодействия (IPC).
-
Модуль asyncio — реализует асинхронное программирование с помощью корутин и событийного цикла. Эффективен для большого количества IO-bound задач, например, сетевых операций.
-
concurrent.futures — высокоуровневый интерфейс для работы с потоками (ThreadPoolExecutor) и процессами (ProcessPoolExecutor), упрощает запуск параллельных задач.
Пример использования threading:
import threading
def worker():
print("Работа в потоке")
thread = threading.Thread(target=worker)
thread.start()
thread.join()
Пример использования multiprocessing:
from multiprocessing import Process
def worker():
print("Работа в процессе")
process = Process(target=worker)
process.start()
process.join()
Таким образом, выбор метода зависит от типа задачи: IO-bound — threading или asyncio, CPU-bound — multiprocessing.