我有一个我使用的子流程。我必须能够异步地从这个进程读取和写入到它各自的标准输出和标准输入。
我怎样才能做到这一点?我看过subprocess
,但是该communicate
方法等待进程终止(这不是我想要的)并且该subprocess.stdout.read
方法可以阻塞。
子进程不是Python 脚本,但如果绝对必要,可以对其进行编辑。我总共将拥有大约 15 个这样的子流程。
您是否考虑过使用一些队列或 NOSQL DB 进行进程间通信?我建议您使用 Redis,并在您的进程中读取和写入不同的键。
看看 sarge:http ://sarge.readthedocs.org/en/latest/index.html
来自 sarge 文档:
如果您想与 Python 应用程序中的外部程序进行交互,Sarge 是一个库,旨在让您的生活比使用 Python 标准库中的 subprocess 模块更轻松。
看看communicate
是如何实现的。
基本上有两种方法可以做到:
select()
并被通知您是否可以读/写,