bau*_*aum 6 python macos bash time
我一直在研究Python 3中的一些Project Euler问题[osx 10.9],我想知道它们运行了多长时间.
我一直在使用以下两种方法为我的程序计时:
1)
import time
start = time.time()
[program]
print(time.time() - start)
Run Code Online (Sandbox Code Playgroud)
2)在bash命令行上输入 time python3 ./program.py
但是,这两种方法往往会产生不同的结果.在我正在处理的程序中,第一个返回0.000263
(秒,截断)而第二个返回
real 0m0.044s
user 0m0.032s
sys 0m0.009s
Run Code Online (Sandbox Code Playgroud)
显然存在巨大的差异 - 与real
时间相比有两个数量级.
我的问题是:
a)为什么会有区别?这是解释器的开销吗?
b)我应该使用哪一个来准确确定程序运行的时间?是time.time()
准确的,在如此小的间隔?
我意识到这些微不足道的时间并不是最重要的; 这更像是一种好奇心.
谢谢.
[ 更新: ]
感谢所有的答案和评论.你的开销是正确的.这个程序:
import time
start = time.time()
print("hello world")
print(time.time() - start)
Run Code Online (Sandbox Code Playgroud)
据bash说,需要大约0.045秒.
据bash说,我复杂的Project Euler问题耗时约0.045秒.问题解决了.
我来看看timeit
.谢谢.
Mar*_*ers 11
解释器导入site.py
并可以在启动时触及各种其他文件.这一切都需要时间才能import time
执行你的行:
$ touch empty.py
$ time python3 empty.py
real 0m0.158s
user 0m0.033s
sys 0m0.021s
Run Code Online (Sandbox Code Playgroud)
在计时代码时,考虑到其他进程,磁盘刷新和硬件中断都需要花费时间并影响您的时间.
使用timeit.default_timer()
让您的平台最准确的计时,但最好使用timeit
模块本身的时间的代码片段个人以消除尽可能多的变量可能的.