【问题标题】:Monitor a process and capture output with python使用 python 监控进程并捕获输出
【发布时间】:2017-12-08 01:02:24
【问题描述】:

我正在使用 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)

【问题讨论】:

标签: python


【解决方案1】:

假设您有一个 Unix 机器,并且您可以获得相关标准输入、标准输出等的文件描述符,您可以使用 select.select 函数来监控这些流上的活动。

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

【讨论】:

    猜你喜欢
    • 2022-01-04
    • 2016-07-21
    • 2014-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-23
    • 2021-05-06
    相关资源
    最近更新 更多