如何通过subprocess模块执行bash命令time而不是/usr/bin/time?

0 投票
2 回答
564 浏览
提问于 2025-04-16 16:18

我正在尝试写一个小脚本,用来做一些性能测试。我使用了 subprocess.Popen 来执行时间命令。以下是代码的一个示例:

import subprocess
import shlex

command = shlex.split("time thing_im_benchmarking")
p = subprocess.Popen(command)
p.wait()

我得到的输出是:

2.58用户 0.04系统 0:02.83总共 92% CPU(0平均文本+0平均数据 11568最大内存)k 0输入+0输出(0重大+791次小页面错误 0交换

我真正想要的是:

real    0m3.048s
user    0m2.784s
sys 0m0.040s

我该如何让 Popen 执行内置的 bash 命令呢?

2 个回答

0

我知道这个回答有点晚了,但如果你想要一个标准化的时间输出,可以使用 -p 这个参数。这样你就能得到符合 POSIX 2 标准的时间输出。当我用一个程序自动收集时间数据时,这个方法对我帮助很大。

3

在使用 subprocess.Popen() 这个函数时,可以传入一个参数 shell=True

撰写回答