Встречается на собеседованиях • сегодня

Чем плохо использование потоков нежели кооперативной многозадачности в Python

В Python потоки (threading) имеют ограничения из-за GIL (Global Interpreter Lock), который позволяет выполняться только одному потоку за раз в одном процессе. Это делает их неэффективными для CPU-задач, так как они не могут выполняться параллельно.

Кооперативная многозадачность (asyncio) более эффективна для I/O-операций, так как не блокирует поток, а переключает задачи при ожидании. Это уменьшает накладные расходы на переключение контекста.

Пример:

python
# Потоки (неэффективно для CPU)
import threading

def cpu_task():
    sum(range(10**6))

threads = [threading.Thread(target=cpu_task) for _ in range(4)]
for t in threads: t.start()
for t in threads: t.join()

# Asyncio (лучше для I/O)
import asyncio

async def io_task():
    await asyncio.sleep(1)

async def main():
    await asyncio.gather(*[io_task() for _ in range(4)])

asyncio.run(main())

Вывод: потоки плохи для CPU-задач из-за GIL, асинхронность лучше для I/O.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы