2011-04-28 49 views
0

我有一个脚本(这是一个Hadoop脚本猪到b precice)从中我要测量的执行时间。我可能会计划多次运行测试,并将平均/中位时间作为执行时间。使用Python Popen对脚本进行基准测试?

由于手工启动脚本几次可能会很麻烦,我想编写一个脚本来运行这些测试。

它是使用Python的POPEN启动一个新的进程,执行脚本并衡量进程正在运行的时间是个好主意,说:

# start timer 
p = subprocess.Popen(...) 
stdout, stderr = p.communicate() 
# end timer 

是否创建新的进程歪斜在时间的结果测量,还是这个apporoach罚款?还有其他建议吗?

最佳, 威尔

+2

相反,while循环,只需使用'p.communicate()'等待进程结束。 (或'p.wait()',如果你没有重定向输出。) – 2011-04-28 14:25:52

+0

谢谢,以及如果我的脚本产生大量输出会怎么样? p.communicate缓冲整个输出,直到它打印它?有没有办法打印部分输出/定期冲洗缓冲区? – Will 2011-04-28 14:33:49

+1

或者,在Linux上,您可以使用time命令来衡量一个进程已经运行了多少。例如,“time myprog”会运行myprog,并最终告诉你需要多少时间。 – sashoalm 2011-04-28 14:35:25

回答

2

我还只是使用time实用程序:

time python foo.py 

然后,您可以做一个bash脚本这多次运行,记录对各运行的时间。然后,使用shell实用程序或Python脚本对它们进行平均。

+0

似乎合理。谢谢。 – Will 2011-04-28 14:57:13

相关问题