【发布时间】:2020-03-27 16:38:24
【问题描述】:
我有一个要求,我必须启动多个应用程序,获取它们的每个 stdout、stderr 并且这些应用程序可以无限运行。这些进程不交换/共享数据并且彼此独立。要进行可变压力测试,它们的超时时间可能不同。
For eg:
app1 -> 70sec
app2 -> 30sec
.
.
appN -> 20sec
如果这些是具有一个共同超时的多个应用程序,我会将其包装在一个定时的 while 循环中并最终终止所有进程。
以下是我认为应该可行的一些方法:
- 每个应用程序都有一个计时器线程,它读取标准输出并在它过期后立即终止进程。进程在线程内启动
- 一个计时器线程循环遍历每个进程的 pid/process_objects:end_time 字典,并在其 end_time >= 当前时间时终止该进程
我曾尝试使用 asyncio gather,但它并不能完全满足我的需求,而且我在 Windows 上遇到了一些问题。
我还有其他方法可以使用吗?
【问题讨论】:
标签: python multiprocessing python-3.7