Ali*_*Ali 3 python clock cpu-usage
我使用以下python代码对我的服务器进行基准测试:
import time
initial_clock = time.clock()
res = 0
for i in range(1, 10000000):
res += i * i
print (time.clock() - initial_clock)
Run Code Online (Sandbox Code Playgroud)
当我多次运行它时,我会得到不同的执行时间,从2.163377秒到2.970836秒.我知道相同的代码可能由于CPU负载的变化而具有不同的执行时间,但正如time.clock文档中所述,它只考虑当前的进程时钟,因此time.clock()即使使用不同,它也应该具有相同的执行时间time.time().不应该?
无论如何我还能获得clock一段python代码的确切数量吗?
编辑:我使用time.process_time()并获得相同的结果.
计时代码的第一条规则:使用timeit模块.这样可以自动为您的操作系统选择最佳计时器,最大限度地减少其他影响,并通过多次计时运行为您提供最准确的时间估算.
接下来,time.clock()是不是处理具体.它是CPU上的时钟时间,是的,但不是当前进程使用CPU花费的时间.计划在CPU上运行的其他进程将增加所需时间的波动.你想要使用time.process_time().
但是,所有代码都受到潜在的缓存和特定于Python的周期性进程(例如垃圾收集器运行)的影响.你不能期望得到可重复的time.clock()或time.process_time()值,因为那个时钟不能解释Python过程本身的后台工作.您可以timeit在计时代码时禁用垃圾收集器进程(为您执行此操作),但这对内部缓存没有帮助(这些缓存是特定于实现的,大多数都没有记录).
timeit用于time.perf_counter()包括I/O和其他可能被测试代码启动的进程所花费的时间.当您用作命令行脚本或调用API函数时传递时,可以time.process_time()使用-p开关来告诉它使用.timeittimer=time.process_time
| 归档时间: |
|
| 查看次数: |
94 次 |
| 最近记录: |