使用python监视进程并捕获输出

时间:2017-12-08 01:02:25

标签: python

我正在使用python编写基准测试实用程序。我希望我的python程序执行一个程序并捕获输出以及获取其最大资源使用量。以下代码运行命令并每秒获取一次内存和处理器使用率,但是如何访问python中的输出?这是我目前的设置:

pid = psutil.Popen(cmd_args, shell=False, stdout=subprocess.PIPE)

p = psutil.Process(pid=pid.pid)
x = 0
cpu_util = []
mem_util = []

while p.status() != "zombie":
    if x % 10 == 0:
        with p.oneshot():
            cpu_util.append(p.cpu_percent())
            mem_util.append(p.memory_percent())
    x += 1
    time.sleep(0.1)

max_cpu_load = max(cpu_util)
max_mem_load = max(mem_util)

#What I would like to do, but don't understand
print(pid.stdout)

1 个答案:

答案 0 :(得分:0)

假设您有一个Unix框,并且您可以获取相关stdin,stdout,...的文件描述符,您可以使用select.select函数来监视这些流上的活动。

https://docs.python.org/3/library/select.html#select.select