【问题标题】:Use Python Popen to benchmark a script?使用 Python Popen 对脚本进行基准测试?
【发布时间】:2011-04-28 14:23:24
【问题描述】:

我有一个脚本(它是一个精确的 hadoop pig 脚本),我想从中测量执行时间。我可能计划多次运行测试并将平均/中值时间作为执行时间。

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

使用 Python 的 Popen 启动一个执行脚本并测量该进程运行时间的新进程是否是个好主意,比如:

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

创建一个新流程是否会使时间测量结果出现偏差,或者这种方法是否可行?还有其他建议吗?

最好, 会

【问题讨论】:

  • 代替while循环,只需使用p.communicate() 等待进程完成。 (或者p.wait(),如果你不重定向输出。)
  • 谢谢,如果我的脚本产生大量输出怎么办? p.communicate 会缓冲整个输出,直到它打印出来?有没有办法定期打印部分输出/刷新缓冲区?
  • 另外,在 Linux 上,您可以使用 time 命令来对进程的运行量进行基准测试。例如,“time myprog”将运行 myprog 并在最后告诉您它花费了多少时间。
  • 检查 my answer here for how to incrementally read stdout/stdin,如果您需要在 Python 中执行此操作,可能会很有用。

标签: python process benchmarking popen


【解决方案1】:

我也只使用time 实用程序:

time python foo.py

然后您可以制作一个 bash 脚本来多次运行,记录每次运行所用的时间。然后,只需使用 shell 实用程序或 Python 脚本对它们进行平均。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-07
    • 2010-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-02
    相关资源
    最近更新 更多