Как безопасно распараллелить CPU-работу с multiprocessing на разных ОС и без лишних копий?
На Linux избегайте fork с активным asyncio/TLS — используйте spawn/forkserver; на Windows только spawn. Передавайте крупные данные через multiprocessing.shared_memory/Array/Queue батчами, а не гигантскими pickles. Инициализацию делайте в if __name__ == "__main__":, задайте maxtasksperchild, корректно ловите SIGTERM и дренируйте очереди перед join().
🔹 Курс «Программирование на языке Python»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
Библиотека собеса по Python
🔹 Курс «Программирование на языке Python»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
Библиотека собеса по Python
❤2
Как в Python работает метод __call__() и когда его имеет смысл использовать?
Метод call() предоставляет возможность сделать объект вызываемым, что позволяет использовать его как функцию. Этот метод можно внедрить в любой класс, чтобы экземпляр этого класса можно было вызывать напрямую. Это особенно удобно, когда класс решает одну основную задачу и может выступать в роли функции, при этом сохраняя свое внутреннее состояние и структуру.
Библиотека собеса по Python
Библиотека собеса по Python
❤1
Что будет, если ошибку не обработает блок except?
Если ошибка не будет обработана в блоке except, то программа прервется и выдаст сообщение об ошибке. Это называется необработанным исключением.
При возникновении исключения Python генерирует traceback — последовательность вызовов функций, которая привела к ошибке.
Если исключение не перехватывается блоком except, то traceback выводится пользователю и программа завершается аварийно.
Библиотека собеса по Python
При возникновении исключения Python генерирует traceback — последовательность вызовов функций, которая привела к ошибке.
Если исключение не перехватывается блоком except, то traceback выводится пользователю и программа завершается аварийно.
Библиотека собеса по Python
Готовитесь к собеседованию в AI?
Вопросы по математической базе — стандартный этап отбора на позиции Data Scientist и ML Engineer. Вас спросят не только про код, но и про то, как работают алгоритмы «под капотом».
Прокачайте хард-скиллы на обновленном курсе «Математика для разработки AI-моделей».
Важный апдейт:
— теперь обучение включает живые вебинары;
— первый прошел, но второй стартует сегодня, 9 декабря;
— это шанс разобрать сложные вопросы с экспертами в прямом эфире.
Что внутри:
— линейная алгебра;
— матанализ;
— теория вероятностей.
Успейте присоединиться к потоку
Вопросы по математической базе — стандартный этап отбора на позиции Data Scientist и ML Engineer. Вас спросят не только про код, но и про то, как работают алгоритмы «под капотом».
Прокачайте хард-скиллы на обновленном курсе «Математика для разработки AI-моделей».
Важный апдейт:
— теперь обучение включает живые вебинары;
— первый прошел, но второй стартует сегодня, 9 декабря;
— это шанс разобрать сложные вопросы с экспертами в прямом эфире.
Что внутри:
— линейная алгебра;
— матанализ;
— теория вероятностей.
Успейте присоединиться к потоку
❤1
В высоконагруженном Python-сервисе вы замечаете, что CPU загружен слабо, но задержки обработки запросов постоянно растут. При анализе видно, что большая часть времени тратится на сетевые операции. Что может быть причиной и как это исправить?
Причина в том, что сервис выполняет блокирующие I/O-операции в потоках или синхронно. Для исправления нужно перейти на асинхронную модель (asyncio, uvloop), использовать асинхронные драйверы для работы с БД/HTTP и вынести тяжёлые операции в отдельный пул процессов или потоков.
🔹 Курс «Программирование на языке Python»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
Библиотека собеса по Python
🔹 Курс «Программирование на языке Python»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
Библиотека собеса по Python
В Kubernetes-продакшене пользователи жалуются, что при резком росте нагрузки часть запросов теряется или обрабатывается с большим лагом. Как вы будете искать и решать проблему?
Проверю метрики Pod’ов и нод (CPU/memory), события в кластере и логи ingress-контроллера. Удостоверюсь, что настроены requests/limits, HPA для автоматического масштабирования и readinessProbe, чтобы трафик шёл только на готовые Pod’ы. Для решения — оптимизировать ресурсы, включить горизонтальное или кластерное авто-масштабирование, при необходимости добавить очередь (Kafka/RabbitMQ) для сглаживания пиков.
🔹 Курс «Программирование на языке Python»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
Библиотека собеса по Python
🔹 Курс «Программирование на языке Python»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
Библиотека собеса по Python
Вы разрабатываете высоконагруженный сервис на FastAPI. При нагрузочном тестировании видно, что время отклика сильно растёт, хотя CPU и память используются не полностью. Какие могут быть причины и как вы будете решать проблему?
Чаще всего проблема в блокирующем коде (синхронные запросы к БД, внешним API или тяжёлые вычисления), который “забивает” event loop. Нужно вынести такие операции в ThreadPoolExecutor/ProcessPoolExecutor или заменить их на асинхронные аналоги (например, httpx.AsyncClient, databases, async-драйверы для SQL/NoSQL). Также стоит проверить конфигурацию Uvicorn/Gunicorn (число воркеров, workers-per-core) и настроить connection pooling.
Библиотека собеса по Python
Библиотека собеса по Python
❤4👍1
В асинхронном Python-сервисе (asyncio) при росте нагрузки резко увеличиваются задержки отклика, хотя CPU и память не перегружены. В чём может быть причина и как её диагностировать?
Чаще всего дело в блокирующем коде внутри event loop (синхронные вызовы, тяжёлые вычисления или блокирующие I/O). Диагностировать можно профилировщиками (async-profiler, aiomonitor, trio-asyncio) и логированием длительных задач. Решение — вынести CPU-bound операции в ProcessPoolExecutor, заменить блокирующие вызовы на асинхронные аналоги или рефакторить архитектуру.
🔹 Курс «Программирование на языке Python»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
Библиотека собеса по Python
🔹 Курс «Программирование на языке Python»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
Библиотека собеса по Python
❤3👍2
В высоконагруженном Python-сервисе время отклика начинает расти при увеличении числа потоков, хотя CPU используется не полностью. В чём может быть причина и как это исправить?
Причина в GIL: в Python одновременно выполняется только один поток байткода, поэтому многопоточность не даёт прироста для CPU-bound задач. Решение — использовать multiprocessing/ProcessPoolExecutor или вынести вычисления в C-расширения/NumPy.
Библиотека собеса по Python
Библиотека собеса по Python
👍2
Не будь «просто скрипт-кидди»
Python прост в изучении, но сложен в мастерстве. На собеседованиях сразу видно, кто учил язык по гайдам, а кто понимает алгоритмы и архитектуру приложений.
Акция 1 + 2:
Покупаешь один курс — учишься на трех. Оплата только за самый дорогой трек.
Что подтянуть к интервью:
— Алгоритмы и структуры данных;
— Архитектуры и шаблоны проектирования.
Стать инженером
Акция до 31 декабря.
Сомнения в выборе? @manager_proglib
Python прост в изучении, но сложен в мастерстве. На собеседованиях сразу видно, кто учил язык по гайдам, а кто понимает алгоритмы и архитектуру приложений.
Акция 1 + 2:
Покупаешь один курс — учишься на трех. Оплата только за самый дорогой трек.
Что подтянуть к интервью:
— Алгоритмы и структуры данных;
— Архитектуры и шаблоны проектирования.
Стать инженером
Акция до 31 декабря.
Сомнения в выборе? @manager_proglib
В продакшн случайно был задеплоен коммит с багом. Фикс уже готов, но нужно быстро откатить изменения, чтобы восстановить рабочее состояние. Какие у вас есть варианты действий и когда использовать каждый?
Можно использовать git revert, если нужно сохранить историю и явно зафиксировать отмену коммита (подходит для общих веток). Если баговый коммит ещё не попал в общий репозиторий, можно применить git reset --hard и перезаписать историю. Для сложных случаев — git cherry-pick нужных исправлений в стабильную ветку.
Библиотека собеса по Python
Библиотека собеса по Python
👍1