Назови способы конкурентного выполнения кода в Python
Ответ от нейросети
sobes.tech AI
В Python есть несколько способов конкурентного выполнения кода:
-
Потоки (threading) — позволяют запускать несколько потоков в одном процессе. Из-за GIL (Global Interpreter Lock) потоки не дают настоящего параллелизма в CPU-интенсивных задачах, но полезны для I/O-bound операций.
-
Многопроцессность (multiprocessing) — создает отдельные процессы, каждый со своей памятью и интерпретатором Python, что позволяет обойти GIL и добиться настоящего параллелизма для CPU-интенсивных задач.
-
Асинхронное программирование (asyncio) — основано на event loop и корутинах, эффективно для большого количества I/O-bound задач без создания потоков или процессов.
-
Concurrent.futures — высокоуровневый интерфейс для запуска задач в потоках или процессах.
Пример использования multiprocessing:
from multiprocessing import Pool
def f(x):
return x * x
if __name__ == '__main__':
with Pool(4) as p:
print(p.map(f, [1, 2, 3, 4]))
Пример с asyncio:
import asyncio
async def main():
print('Hello')
await asyncio.sleep(1)
print('World')
asyncio.run(main())