Каков самый быстрый способ асинхронной связи между процессами Python? ⇐ Python
-
Гость
Каков самый быстрый способ асинхронной связи между процессами Python?
Я создаю быстрое асинхронное приложение на Python. Мне нужно взаимодействовать между процессами (либо внутри одного родительского процесса, либо через отдельные скрипты Python) с низкой и стабильной задержкой, асинхронно (поскольку принимающему процессу необходимо переключиться на другие задачи, когда очередь связи пуста).
Как это сделать быстрее всего? Многопоточность невозможна, поскольку время от времени процессы могут быть связаны с процессором. Очереди многопроцессорной обработки синхронны; aioprocessing работает слишком медленно. Самый быстрый метод, который я нашел, — это нулевой IPC PUSH/PULL через библиотеку asyncio pyzmq с задержкой около 50 микросекунд (что подразумевает пропускную способность около 20 000 сообщений в секунду). Я бы хотел сократить это время до 5 микросекунд, если это возможно. Я считаю, что файлы, отображаемые в памяти, являются самым быстрым протоколом связи, но я не знаю, как взаимодействовать асинхронно в стиле сообщения/очереди, который будет предупреждать принимающий процесс о наличии новой задачи для обработки или о том, возможно ли это вообще. Я пробовал различные подходы, но ни один из них не дал таких результатов по задержке и пропускной способности, которые могли бы приблизиться к файлам с отображением в памяти.
Я создаю быстрое асинхронное приложение на Python. Мне нужно взаимодействовать между процессами (либо внутри одного родительского процесса, либо через отдельные скрипты Python) с низкой и стабильной задержкой, асинхронно (поскольку принимающему процессу необходимо переключиться на другие задачи, когда очередь связи пуста).
Как это сделать быстрее всего? Многопоточность невозможна, поскольку время от времени процессы могут быть связаны с процессором. Очереди многопроцессорной обработки синхронны; aioprocessing работает слишком медленно. Самый быстрый метод, который я нашел, — это нулевой IPC PUSH/PULL через библиотеку asyncio pyzmq с задержкой около 50 микросекунд (что подразумевает пропускную способность около 20 000 сообщений в секунду). Я бы хотел сократить это время до 5 микросекунд, если это возможно. Я считаю, что файлы, отображаемые в памяти, являются самым быстрым протоколом связи, но я не знаю, как взаимодействовать асинхронно в стиле сообщения/очереди, который будет предупреждать принимающий процесс о наличии новой задачи для обработки или о том, возможно ли это вообще. Я пробовал различные подходы, но ни один из них не дал таких результатов по задержке и пропускной способности, которые могли бы приблизиться к файлам с отображением в памяти.
Мобильная версия