我正在尝试编写一个python脚本来对几段代码进行基准测试。问题是当脚本运行时,命令id的输出与我得到的不同,我直接在bash提示符下运行它。
以下是python脚本的代码
import subprocess
import re
import os
app = os.getcwd() + "/" + "myapp"
testPopen = subprocess.Popen(args=['/usr/bin/time',app],
stdout=subprocess.PIPE,stderr=subprocess.PIPE, shell=False)
testPopen.wait()
以上是上述代码的输出
real 1.0
user 0.8
sys 0.0
答案 0 :(得分:2)
当您从bash提示符运行time myapp
时,您正在使用bash's time
command。 (键入help time
以查看bash将其理解为bash命令。)
运行python脚本时,您使用的是/usr/bin/time
different program。 (键入man time
或which time
以查看该时间也是一个程序。多么令人困惑!)
要使python脚本使用bash time命令:
import shlex
testPopen = subprocess.Popen(shlex.split('bash -c "time {a}"'.format(a = app)),
stdout=subprocess.PIPE,stderr=subprocess.PIPE, shell=False)
out,err = testPopen.communicate()
print(err)