⚡️ Запускаем новую рубрику - Вопросы С Собесов!
Будем разбирать частые вопросы с реальных технических интервью.
Сначала отвечай сам и только потом проверяй ответ
Стек: Python
И первый на очереди вопрос с собеса в Сбер:
«asyncio, threading или multiprocessing — что, когда и зачем?»
Ответ:
asyncio применяю для большого числа I/O-bound операций, когда используемые библиотеки поддерживают async/await: например, HTTP-запросы, работа с БД или обработка множества сетевых соединений. Один поток управляет задачами кооперативно, поэтому нельзя выполнять внутри event loop длительный блокирующий или CPU-bound код.
threading подходит для I/O-bound задач с блокирующими библиотеками, которые нельзя или нецелесообразно заменить на async. Для CPU-bound Python-кода потоки обычно не дают параллелизма из-за GIL, хотя могут быть полезны, если тяжёлая работа выполняется в C-коде, освобождающем GIL.
multiprocessing выбираю для CPU-bound вычислений: отдельные процессы имеют собственный интерпретатор и GIL, поэтому могут использовать несколько ядер. Минусы — более дорогой запуск, передача данных между процессами и необходимость сериализации.
На практике я бы, например, использовал asyncio в FastAPI-сервисе для асинхронных внешних запросов, а тяжёлую обработку данных вынес бы в отдельный процесс или очередь задач.
Пиши свой вариант ответа в комментарии👇
Post #129
917
- 👍 21
- 🔥 5