Sobes.tech
Back to questions
Junior — Middle
74

Какие методы и средства реализации параллелизма и асинхронности применимы в Python?

Companies where asked
Стилсофт

Answer from AI

sobes.tech AI

В Python для реализации параллелизма и асинхронности используются несколько основных подходов:

  1. Многопоточность (threading) — позволяет запускать несколько потоков внутри одного процесса. Из-за GIL (Global Interpreter Lock) в CPython потоки не могут одновременно выполнять байт-код, поэтому многопоточность эффективна для задач с большим количеством операций ввода-вывода.
import threading

def worker():
    print("Работа в потоке")

thread = threading.Thread(target=worker)
thread.start()
thread.join()
  1. Многопроцессность (multiprocessing) — создает отдельные процессы, каждый со своей памятью, что позволяет обойти ограничение GIL и эффективно использовать несколько ядер CPU.
from multiprocessing import Process

def worker():
    print("Работа в процессе")

process = Process(target=worker)
process.start()
process.join()
  1. Асинхронное программирование (asyncio) — позволяет писать неблокирующий код с использованием корутин, событийного цикла и ключевых слов async/await. Подходит для большого количества операций ввода-вывода.
import asyncio

async def main():
    print("Начало")
    await asyncio.sleep(1)
    print("Конец")

asyncio.run(main())
  1. Библиотеки и фреймворки — например, concurrent.futures для удобной работы с потоками и процессами, gevent или twisted для кооперативной многозадачности.

Выбор метода зависит от задачи: для CPU-интенсивных — multiprocessing, для I/O — threading или asyncio.