Эффективность с несколькими читателями asyncio и одним автором (другой поток) - PullRequest
0 голосов
/ 03 февраля 2019

Я хотел бы объединить потоки и asyncio с некоторой синхронизацией.

Например: поток записывает кадры из камеры в некоторую переменную или буфер.Несколько читателей (asyncio или потоков) просыпаются при каждой записи, чтобы взять последний доступный кадр.

Я пытался извлечь из asyncio.Event безрезультатно.

class EventThreadSafe(asyncio.Event):
    def set(self):
        self._loop.call_soon_threadsafe(super().set)

Есть лимеханизм, который делает это уже (https://github.com/aio-libs/janus?) или как лучше его реализовать?

1 Ответ

0 голосов
/ 03 февраля 2019

вы можете использовать asyncio.Queue , однако это не потокобезопасно, просто задача безопасна.Если вы хотите использовать потокобезопасность, используйте queue.Queue , однако это небезопасно, поскольку блокирует ваш поток.Лично для многопроцессорности я использую 0MQ Push-Pull Pattern , который подает в / из адаптера asyncio.Queue.

...