Python 执行命令行(时间)

1 投票
2 回答
1325 浏览
提问于 2025-04-15 21:45

我想在一个Python脚本中运行'unix'的'time'命令,用来测量一个非Python应用程序的执行时间。我打算使用os.system这个方法。有没有办法把这个输出结果保存到Python中?我的目标是多次运行这个应用程序,保存它们的执行时间,然后对这些时间做一些统计。

谢谢你

2 个回答

0

你可以使用 timeit模块 来测量代码片段的执行时间(比如,一个使用subprocess模块来启动外部命令的函数,正如上面的回答所描述的那样),并将这些数据保存到一个csv文件中。你可以使用统计模块对csv数据进行统计,或者用Excel、LogParser、R等工具来处理。

另一种方法是使用hotshot分析器,它可以进行性能分析,并返回一些统计数据,你可以通过print_stats()方法打印这些数据,或者通过遍历将它们保存到文件中。

3

你真的应该使用subprocess模块来运行外部命令。这个Popen()方法可以让你指定一个文件对象,输出结果会发送到这个文件对象中(注意,你可以使用任何像文件一样工作的Python对象,不一定非要写入一个实际的文件)。

比如:

import subprocess
log_file = open('/path/to/file', 'a')

return_code = subprocess.Popen(['/usr/bin/foo', 'arg1', 'arg2'], stdout=log_file).wait()

撰写回答