sách gpt4 ai đã đi

python - 运行外部命令并获取它消耗的 CPU 量

In lại Tác giả: Space Dog 更新时间:2023-10-30 00:23:00 33 4
mua khóa gpt4 Nike

很简单,我想从 Python 脚本中运行外部命令/程序,完成后我还想知道它消耗了多少 CPU 时间。

困难模式:并行运行多个命令不会导致 CPU 消耗结果不准确。

1 Câu trả lời

在 UNIX 上: (a) 使用 resource模块(另见 icktoofay 的回答),或 (b) 使用 thời gian命令并解析结果,或 (c) 使用 /quy trình文件系统,解析/proc/[pid]/stat 并解析出 utimestime 字段。最后一个是特定于 Linux 的。

sử dụng资源的例子:

import subprocess, resource
usage_start = resource.getrusage(resource.RUSAGE_CHILDREN)
subprocess.call(["yourcommand"])
usage_end = resource.getrusage(resource.RUSAGE_CHILDREN)
cpu_time = usage_end.ru_utime - usage_start.ru_utime

注意:没有必要执行 fork/execvp、subprocess.call() 或其他 subprocess这里的方法很好,而且更容易使用。

注意:您可以使用 subprocess.Popen 或 subprocess.call 和线程从同一个 python 脚本同时运行多个命令,但资源不会返回它们正确的单个 cpu 时间,它会返回它们之间的时间总和调用 getrusage;要获得单独的时间,请为每个命令运行一个小的 python 包装器以如上所述计时(可以从您的主脚本启动它们),或者使用 thời gian 方法,Sẽ使用多个同时命令正确工作(时间基本上就是这样一个包装器)。

sử dụng时间的例子:

import subprocess, StringIO
time_output = StringIO.StringIO()
subprocess.call(["time", "yourcommand", "youroptions"], stdout=time_output)
# parse time_output

在 Windows 上:您需要以某种方式使用性能计数器(又名“性能数据助手”)。这是一个 C example底层API。要从 python 获取它,您可以使用两个模块之一:win32pdh (pywin32 的一部分;sample code)或pyrfcon (跨平台,也适用于 Unix;sample code).

这些方法中的任何一个实际上都满足上面的“困难模式”要求:即使在繁忙的系统上有多个不同进程的运行实例,它们也应该是准确的。与在空闲系统上仅运行一个进程相比,它们在那种情况下可能不会产生完全相同的结果,因为进程切换确实有一些开销,但它们将非常接近,因为它们最终从操作系统调度程序获取数据。

关于python - 运行外部命令并获取它消耗的 CPU 量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13889066/

33 4 0
Bài viết được đề xuất: python - python 2.7+ 中的组引用无效
Bài viết được đề xuất: C# 从工厂返回通用接口(interface)
Bài viết được đề xuất: python - Python 中的文本移位函数
Bài viết được đề xuất: c# - 在 C# 中过滤巨大列表的最高效方法?
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com