Back to questions
Junior — Middle
74
Какие методы и средства реализации параллелизма и асинхронности применимы в Python?
Companies where asked
Стилсофт
Answer from AI
sobes.tech AI
В Python для реализации параллелизма и асинхронности используются несколько основных подходов:
- Многопоточность (threading) — позволяет запускать несколько потоков внутри одного процесса. Из-за GIL (Global Interpreter Lock) в CPython потоки не могут одновременно выполнять байт-код, поэтому многопоточность эффективна для задач с большим количеством операций ввода-вывода.
import threading
def worker():
print("Работа в потоке")
thread = threading.Thread(target=worker)
thread.start()
thread.join()
- Многопроцессность (multiprocessing) — создает отдельные процессы, каждый со своей памятью, что позволяет обойти ограничение GIL и эффективно использовать несколько ядер CPU.
from multiprocessing import Process
def worker():
print("Работа в процессе")
process = Process(target=worker)
process.start()
process.join()
- Асинхронное программирование (asyncio) — позволяет писать неблокирующий код с использованием корутин, событийного цикла и ключевых слов
async/await. Подходит для большого количества операций ввода-вывода.
import asyncio
async def main():
print("Начало")
await asyncio.sleep(1)
print("Конец")
asyncio.run(main())
- Библиотеки и фреймворки — например,
concurrent.futuresдля удобной работы с потоками и процессами,geventилиtwistedдля кооперативной многозадачности.
Выбор метода зависит от задачи: для CPU-интенсивных — multiprocessing, для I/O — threading или asyncio.