Python - time.time()与bash时间

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模块本身的时间的代码片段个人以消除尽可能多的变量可能的.