В продакшн-сервисе на Python при росте нагрузки CPU-bound задачи (например, обработка изображений) выполняются значительно медленнее, хотя вы используете ThreadPoolExecutor. Почему так происходит и что правильнее сделать?
👾 — В Python потоки работают медленно, лучше перейти на asyncio
👍 — Из-за GIL потоки не дают прироста для CPU-bound задач, лучше использовать ProcessPoolExecutor или multiprocessing
🥰 — Нужно увеличить количество потоков в пуле, чтобы загрузить CPU на 100%
⚡️ — Проблема в сборщике мусора, надо чаще вызывать gc.collect()
Библиотека задач по Python
👾 — В Python потоки работают медленно, лучше перейти на asyncio
👍 — Из-за GIL потоки не дают прироста для CPU-bound задач, лучше использовать ProcessPoolExecutor или multiprocessing
🥰 — Нужно увеличить количество потоков в пуле, чтобы загрузить CPU на 100%
⚡️ — Проблема в сборщике мусора, надо чаще вызывать gc.collect()
Библиотека задач по Python
Вы пишете сервис на Python, который обрабатывает большой поток сетевых запросов. В профилировании видно, что приложение часто простаивает в ожидании I/O. Какой подход будет наиболее правильным для масштабирования?
👾 — Использовать threading.Thread для каждого соединения
👍 — Переписать код на asyncio или uvloop, чтобы обрабатывать соединения асинхронно
🥰 — Запускать gc.collect() после каждого запроса
⚡️ — Перейти на multiprocessing, создавая процесс на каждый запрос
Библиотека задач по Python
👾 — Использовать threading.Thread для каждого соединения
👍 — Переписать код на asyncio или uvloop, чтобы обрабатывать соединения асинхронно
🥰 — Запускать gc.collect() после каждого запроса
⚡️ — Перейти на multiprocessing, создавая процесс на каждый запрос
Библиотека задач по Python
Что такое подгенератор (subgenerator)?
Подгенератор создается с помощью конструкции yield from внутри генератора.
Использование подгенераторов позволяет разбить генератор на несколько частей для упрощения кода и оптимизации памяти. Это полезный инструмент при работе с последовательностями.
Механизм передает значения между генераторами без сохранения всей последовательности в памяти и блокирует основной генератор до полного завершения подгенератора.
Библиотека задач по Python
Подгенератор создается с помощью конструкции yield from внутри генератора.
Использование подгенераторов позволяет разбить генератор на несколько частей для упрощения кода и оптимизации памяти. Это полезный инструмент при работе с последовательностями.
Механизм передает значения между генераторами без сохранения всей последовательности в памяти и блокирует основной генератор до полного завершения подгенератора.
Библиотека задач по Python
У вас есть высоконагруженное Django-приложение. Пользователи жалуются на медленные отклики при работе с ORM-запросами. Какой из подходов будет наиболее правильным для оптимизации?
👾 — Использовать select_related и prefetch_related для оптимизации запросов и уменьшения количества обращений к базе
👍 — Заменить все ORM-запросы на чистый SQL, так как он всегда быстрее
🥰 — Увеличить таймаут подключения к базе данных
⚡️ — Отключить транзакции, чтобы ускорить коммиты
Библиотека задач по Python
👾 — Использовать select_related и prefetch_related для оптимизации запросов и уменьшения количества обращений к базе
👍 — Заменить все ORM-запросы на чистый SQL, так как он всегда быстрее
🥰 — Увеличить таймаут подключения к базе данных
⚡️ — Отключить транзакции, чтобы ускорить коммиты
Библиотека задач по Python
📢 Какой сетап идеально подойдёт для разработки AI-агента?
Голосуйте за свой вариант и пишите в комментариях, в каком режиме вы реально кодите.
❤️ — 1
👍 — 2
⚡️ — 3
👏 — 4
🔥 — 5
🎉 — 6
😁 — 7
😍 — 8
🤩 — 9
Какой бы сетап ни был, без AI-агентов в 2025 всё равно далеко не уедешь.
👉 Научим, как строить агентов, которые кодят с тобой (https://clc.to/PB84Mg)
Голосуйте за свой вариант и пишите в комментариях, в каком режиме вы реально кодите.
❤️ — 1
👍 — 2
⚡️ — 3
👏 — 4
🔥 — 5
🎉 — 6
😁 — 7
😍 — 8
🤩 — 9
Какой бы сетап ни был, без AI-агентов в 2025 всё равно далеко не уедешь.
👉 Научим, как строить агентов, которые кодят с тобой (https://clc.to/PB84Mg)