如何轮询一个python列表,计算其中已结束的子进程
时间: 2023-11-28 11:47:33 浏览: 39
可以使用`psutil`库来获取系统进程状态信息,结合`subprocess`模块来启动和管理子进程。以下是一个示例代码:
```python
import subprocess
import psutil
# 启动子进程
processes = []
for i in range(5):
p = subprocess.Popen(['python', 'child_process.py', str(i)])
processes.append(p)
# 轮询子进程状态
while True:
for p in processes:
if p.poll() is not None: # 子进程已结束
processes.remove(p)
if not processes: # 所有子进程均已结束
break
# 显示当前进程信息
for p in processes:
print(f"Process {p.pid}: CPU {psutil.Process(p.pid).cpu_percent()}%")
```
在上述代码中,首先启动了5个子进程,并将它们的`Popen`对象保存在`processes`列表中。然后进入轮询循环,每次循环检查一次所有子进程的状态,如果有子进程已结束,则从列表中移除。当列表为空时,说明所有子进程均已结束,循环退出。
在每次循环中,可以使用`psutil`库的`Process`类来获取指定进程的CPU占用率等信息,并显示出来。