Быстрый способ запуска сопрограмм из кода синхронизации с использованием uvloop ⇐ Python

Программы на Python
Anonymous
Быстрый способ запуска сопрограмм из кода синхронизации с использованием uvloop

Сообщение Anonymous »

Я ищу эффективный способ запуска сопрограмм из синхронного кода, например. из моего собственного кода Cython. Я попробовал вызвать asyncio.create_task, но он работает довольно медленно, возможно, из-за создания сложного объекта Task pyobject? Есть ли лучший способ, возможно, специфичный для uvloop?
Что я пробовал:
  • Я знаю о возможности вызов my_coro.send(None) в цикле в качестве обходного пути, но это, по моему мнению, просто заблокирует цикл событий до тех пор, пока my_coro не завершится. (см. https://stackoverflow.com/a/73917634/4547852)
  • Я пытался использовать asyncio.queue для передачи данных между синхронной функцией и сопрограммой, но накладные расходы также было значительным. Сейчас я рассматриваю некоторый std::vector фьючерсов, который может быть быстрее.


Подробнее здесь: https://stackoverflow.com/questions/790 ... ing-uvloop

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