В высоконагруженном 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
👍3
В продакшене Python-сервис со временем начинает замедляться, хотя нагрузка остаётся стабильной. Мониторинг показывает рост памяти (memory leak). Как вы будете искать и устранять причину?
Использовать профайлеры (tracemalloc, objgraph, memory_profiler) для отслеживания утечек, проверить циклические ссылки и висящие ссылки на объекты (особенно в кэше или глобальных структурах), оптимизировать работу с коллекциями и сторонними библиотеками.
Библиотека собеса по Python
Библиотека собеса по Python
👍2