【发布时间】:2013-04-03 12:45:58
【问题描述】:
我想测量我的 Python 脚本使用其输出的外部程序的执行时间。
调用extprogram产生输出的程序,此刻我做了类似的事情:
import time
import subprocess
def process_output(line):
...
...
return processed_data
all_processed_data = []
ts = time.time()
p = subprocess.Popen("extprogram", stdout=subprocess.PIPE)
for line in p.stdout:
all_processed_data.append(process_output(line))
te = time.time()
elapsed_time = te - ts
这不能按预期工作,因为我测量的是extprogram 的执行时间加上处理其输出所需的时间。
extprogram 会产生大量数据,因此我想像现在这样使用循环将其输出“流式传输”到我的 Python 程序中。
当extprogram 终止而不是等待处理所有输出时,如何评估te?
【问题讨论】:
-
如果你使用的是 linux 有一个
time命令。 -
你会如何在我的程序中使用它?
-
嗯,时间的正常使用是
time extprogram args,时间输出到stderr。我猜你可以做类似p = subprocess.Popen(["time","extprogram"],stdout = subprocess.PIPE,stderr=subprocess.PIPE)