Back to questions
X5 tech
Middle+
1
Расскажи про способы выполнения кода в Python: многопроцессорность, многопоточность, асинхронность.
Companies where asked
Answer from AI
sobes.tech AI
В Python существуют три основных способа выполнения кода параллельно или асинхронно:
-
Многопроцессорность (multiprocessing)
- Использует несколько процессов, каждый с собственной памятью.
- Обходит ограничение GIL (Global Interpreter Lock), позволяя эффективно использовать несколько ядер CPU.
- Подходит для CPU-интенсивных задач.
- Пример:
from multiprocessing import Pool def f(x): return x*x with Pool(4) as p: print(p.map(f, [1, 2, 3, 4])) -
Многопоточность (threading)
- Использует несколько потоков внутри одного процесса.
- Из-за GIL в CPython только один поток выполняет байт-код Python в любой момент времени.
- Хорошо подходит для задач с большим количеством операций ввода-вывода (I/O), где потоки ждут ответа.
- Пример:
import threading def worker(): print("Работа в потоке") t = threading.Thread(target=worker) t.start() t.join() -
Асинхронность (asyncio)
- Основана на событийном цикле и корутинах.
- Позволяет писать неблокирующий код, эффективно используя время ожидания операций ввода-вывода.
- Не создаёт новые потоки или процессы, работает в одном потоке.
- Подходит для высоконагруженных сетевых приложений.
- Пример:
import asyncio async def main(): print('Hello') await asyncio.sleep(1) print('World') asyncio.run(main())
Выбор способа зависит от задачи: для CPU-интенсивных — multiprocessing, для I/O-интенсивных — threading или asyncio.