Когда мне следует использовать потоки или процессы с asyncio вместо того, чтобы пытаться сделать все ожидающим?Python

Программы на Python
Ответить
Anonymous
 Когда мне следует использовать потоки или процессы с asyncio вместо того, чтобы пытаться сделать все ожидающим?

Сообщение Anonymous »

Я создаю службу Python с использованием asyncio и пытаюсь обеспечить полную асинхронность своего кода. Однако моя реальная рабочая нагрузка включает в себя задачи, требующие большой загрузки ЦП, такие как анализ больших файлов и преобразование данных, а также некоторые сторонние библиотеки, которые блокируют и не предоставляют асинхронные API.
Я знаю, что могу использовать цикл.run_in_executor или asyncio.to_thread для блокирующих операций, а также я мог бы использовать многопроцессорную обработку. Но как на практике опытные разработчики решают, какие части должны оставаться полностью асинхронными, какие должны использовать пул потоков и когда лучше изолировать работу в отдельный процесс или сервис?
Я ищу практические правила принятия решений и шаблоны, которые работают в рабочей среде, а не просто игрушечные примеры. Каковы компромиссы?

Подробнее здесь: https://stackoverflow.com/questions/798 ... to-make-ev
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»