2011-04-28 55 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

相關問題