Встречается на собеседованиях • сегодня
Почему не стоит использовать многопоточность в I/O bound задачах
В Python многопоточность неэффективна для I/O bound задач из-за GIL (Global Interpreter Lock), который позволяет выполняться только одному потоку за раз. Хотя потоки могут переключаться во время I/O операций (ожидание ответа от сети, диска и т.д.), GIL создаёт накладные расходы на переключение контекста.
Лучше использовать асинхронность (asyncio) или мультипроцессинг:
- Asyncio идеален для I/O bound задач, т.к. использует кооперативную многозадачность без GIL.
- Мультипроцессинг обходит GIL, но имеет большие накладные расходы на создание процессов.
Пример с asyncio:
python
import asyncio
async def fetch_data(url):
# Асинхронный I/O (например, HTTP-запрос)
await asyncio.sleep(1) # Имитация I/O
return f"Data from {url}"
async def main():
tasks = [fetch_data(f"url_{i}") for i in range(3)]
results = await asyncio.gather(*tasks)
print(results)
asyncio.run(main())
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы