asyncio 是否支持 运行 来自非主线程的子进程?
Does asyncio support running a subprocess from a non-main thread?
我正在开发一个主要由服务组成的应用程序,这些服务是具有自定义 运行 循环的线程。
其中一项服务需要产生子进程,我不太明白它是否有效。官方documentation含糊不清。也就是说,它在同一部分中同时表示 asyncio supports running subprocesses from different threads
和 An event loop must run in the main thread
。
如果主线程中的事件循环必须 运行,那么如何从不同线程 运行 进行子处理?
文档说:
- 你应该在主线程中有 运行 事件循环。
- 在主线程中请在程序开始时调用
asyncio.get_child_watcher()
。
之后你可以从非主线程创建子进程。
UPD
从Python3.8开始asyncio就没有上面提到的限制了。
一切正常正常工作。
我正在开发一个主要由服务组成的应用程序,这些服务是具有自定义 运行 循环的线程。
其中一项服务需要产生子进程,我不太明白它是否有效。官方documentation含糊不清。也就是说,它在同一部分中同时表示 asyncio supports running subprocesses from different threads
和 An event loop must run in the main thread
。
如果主线程中的事件循环必须 运行,那么如何从不同线程 运行 进行子处理?
文档说:
- 你应该在主线程中有 运行 事件循环。
- 在主线程中请在程序开始时调用
asyncio.get_child_watcher()
。
之后你可以从非主线程创建子进程。
UPD
从Python3.8开始asyncio就没有上面提到的限制了。
一切正常正常工作。