TGViewer
Zen of Python Zen of Python @zen_of_python · 18.8K subscribers
Post #5046 445
Почему max_workers не ограничивает очередь задач

ThreadPoolExecutor(max_workers=8) разрешает одновременно выполнять восемь вызовов. Если сразу вызвать submit для миллиона записей, остальные будут ждать, удерживая Future, аргументы и связанные объекты в памяти.

Окно незавершённой работы ограничивает и подачу: отправить, например, 32 задачи, дождаться завершений через wait(..., FIRST_COMPLETED), забрать результаты и только затем добавить новые. Производитель перестаёт бесконечно убегать вперёд.

В Python 3.14 для обработки с сохранением входного порядка есть executor.map(..., buffersize=32). Ручная схема удобнее, когда результаты нужны по готовности. Ни одна из этих границ не задаёт число запросов в секунду: для внешнего API ограничение частоты рассчитывают отдельно.

#python #производительность
More from @zen_of_python
  1. Oct 10, 2026Post #5048
  2. Oct 10, 2026Showboat и Rodney помогают показать работу ИИ-агента Саймон Уиллисон собирает демонстрации…
  3. Oct 10, 2026Как измерять время async-функции через декоратор Обычная обёртка может вызвать async-функц…
  4. Oct 10, 2026Чего не проверяет runtime_checkable Protocol Protocol позволяет описать небольшой интерфей…
  5. Oct 9, 2026Как добавить MCP-сервер в Django-проект django-mcpz позволяет зарегистрировать Python-функ…
  6. Oct 9, 2026Как дождаться обработки очереди asyncio Пустая очередь ещё не означает, что работа законче…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →