Добавить в корзинуПозвонить
Найти в Дзене
CODERIKK

🔹 Параллелизм в Python: threading vs asyncio

🔹 Когда лучше threading, а когда asyncio? 🔸 Без конкурентности (concurrency) приложение простаивает при I/O: клиенты ждут, throughput падает. threading и asyncio дают параллельность (parallelism) разными способами, чтобы не блокировать процесс. 🔸 threading — это OS‑потоки. Простая модель: запустил функцию в Thread. Хорошо для блокирующего I/O и когда есть C‑расширения, которые освобождают GIL (Global Interpreter Lock). 🔸 GIL (Global Interpreter Lock) мешает реальной параллельности Python‑байткода: для CPU‑bound задач threading не даст ускорения — используйте multiprocessing или C/нативные библиотеки. 🔸 asyncio — одна нить + event loop. Экономит память и масштабируется при тысячах одновременных I/O, но требует async‑совместимых библиотек и другой архитектуры кода. import asyncio async def task(n): await asyncio.sleep(1) return n async def main(): await asyncio.gather(*(task(i) for i in range(1000))) asyncio.run(main()) 📚 Для many I/O — asyncio; для простоты и C‑кодa — thr

🔹 Параллелизм в Python: threading vs asyncio

🔹 Когда лучше threading, а когда asyncio?

🔸 Без конкурентности (concurrency) приложение простаивает при I/O: клиенты ждут, throughput падает. threading и asyncio дают параллельность (parallelism) разными способами, чтобы не блокировать процесс.

🔸 threading — это OS‑потоки. Простая модель: запустил функцию в Thread. Хорошо для блокирующего I/O и когда есть C‑расширения, которые освобождают GIL (Global Interpreter Lock).

🔸 GIL (Global Interpreter Lock) мешает реальной параллельности Python‑байткода: для CPU‑bound задач threading не даст ускорения — используйте multiprocessing или C/нативные библиотеки.

🔸 asyncio — одна нить + event loop. Экономит память и масштабируется при тысячах одновременных I/O, но требует async‑совместимых библиотек и другой архитектуры кода.

import asyncio

async def task(n):

await asyncio.sleep(1)

return n

async def main():

await asyncio.gather(*(task(i) for i in range(1000)))

asyncio.run(main())

📚 Для many I/O — asyncio; для простоты и C‑кодa — threading; для CPU‑bound — multiprocessing.

#CODERIKK #Python #Middle

➡️ Мы в Telegram - Сетке - Дзен

Буду рад вашей реакции здесь⬇️