Могу ли я использовать asyncio для чтения и записи в многопроцессорную систему. Трубка? - PullRequest
4 голосов
/ 06 ноября 2019

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

В настоящее время я использую multiprocessing.Pipe до send и recv значительнобольшие объемы данных между процессами, однако я делаю это за пределами asyncio, и я считаю, что из-за этого я трачу много времени на процессоры на IO_WAIT.

Кажется, что asyncio можети должен использоваться для обработки конвейерного ввода-вывода между процессами, однако я не могу найти пример для чего-либо, кроме конвейерной передачи STDIN / STDOUT.

Из того, что я прочитал, кажется, что я должен зарегистрировать канал с помощью loop.connect_read_pipe(PROTOCOL_FACTORY, PIPE)и аналогично для записи. Однако я не понимаю цели protocol_factory, поскольку это относится к multiprocessing.Pipe. Даже не ясно, должен ли я создавать multiprocessing.Pipe или я могу создать трубу в asyncio.

1 Ответ

1 голос
/ 14 ноября 2019

aiopipe, кажется, делает то, что вы хотите! Он может использоваться со встроенным модулем multiprocessing и предоставляет API, аналогичный обычным блокирующим каналам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...