- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
魔法命令 %timeit
非常适合以交互方式测量代码执行时间。但是,我想获得 %timeit
的结果以便绘制结果。 timeit.timeit
也允许这样做,但没有 %timeit
具有的迭代次数的自动缩放和结果的规范化。
是否有一个内置函数可以对一段代码进行计时,它还会自动调整它执行的迭代次数,并返回一个规范化的结果?
最佳答案
魔法 %timeit
命令提供了一个 -o
选项:
-o: return a TimeitResult that can be stored in a variable to inspect the result in more details.
它仍然会打印结果,但也会返回结果,以便可以将其捕获在变量中。魔术命令的语法有点受限,但您可以通过将其分配给变量并将该变量附加到列表来在 list
中收集不同的结果:
res = []
for i in range(3):
a = %timeit -o 10*10
res.append(a)
# 10000000 loops, best of 3: 61 ns per loop
# 10000000 loops, best of 3: 61.1 ns per loop
# 10000000 loops, best of 3: 60.8 ns per loop
然后访问res
:
print(res)
# [<TimeitResult : 10000000 loops, best of 3: 61.2 ns per loop>,
# <TimeitResult : 10000000 loops, best of 3: 61.3 ns per loop>,
# <TimeitResult : 10000000 loops, best of 3: 61.5 ns per loop>]
这些结果中的每一个都有几个可能感兴趣的属性:
print(res[0].all_runs)
# [0.6166532894762563, 0.6102780388983005, 0.6370787790842183]
print(res[0].best)
# 6.102780388983005e-08
print(res[0].compile_time)
# 0.00020554513866197934
print(res[0].loops)
# 10000000
print(res[0].repeat)
# 3
print(res[0].worst)
# 1.1170931449020795e-06
例如,要绘制最佳时间,您需要创建一个包含最佳值的新列表:
res_best_times = [result.best * 1e9 for result in res]
# "* 1e9" to get the result in nanoseconds
print(res_best_times)
# [61.2, 61.3, 61.5]
关于python - %timeit 在代码中等效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33943362/
我正在使用 timeit.timeit 函数来计时我自己的函数之一,但返回的时间是科学计数法。 import timeit def func(): ... print(timeit.timei
我正在尝试编写一个简单的时间装饰器来测量函数所花费的时间。但是下面的代码给出了我们的递归错误。有什么问题吗? import timeit def measure(func): def wrap
import timeit t=timeit.timeit('x=map(lambda x:x*10,range(32))') print(t) 这表现了: 0.4678139 但 t=timeit.
我一直在尝试执行一个代码片段来了解执行需要多长时间。我尝试了两种选择来做到这一点。一种是在 timeit.timeit 函数内使用变量并进行检查。另一种是直接使用值并检查。第二种方法工作正常,但我在使
假设我有一些函数接受一个数组并将每个元素更改为 0。 def function(array): for i in range(0,len(array)): array[i] =
有没有办法在 python 中为 timeit.timeit() 函数指定拆卸?我知道有关于“声明”和“设置”的争论,但我还没有找到执行拆卸的好方法。 在我的“声明”中包含拆解代码会影响我尝试计时的代
有时,我喜欢计算我的部分代码运行需要多长时间。我检查了很多在线网站,并且看到了两种主要的方法来做到这一点。一种是使用time.time,另一种是使用timeit.timeit。 所以,我写了一个非常简
我想从 python timeit 模块检查打印以下内容需要多少时间,如何打印, import timeit x = [x for x in range(10000)] timeit.timeit("
我在 Project Euler 上工作过问题并决定添加计时,因此通过以下代码段将 timeit 添加到时间 main()(将全局 RESULT 存储在 main( ) 为了方便起见) t = tim
当我执行 help('timeit') 时,位于 timeit 模块(Python(2.7) 标准库)中的以下函数不会显示。 def reindent(src, indent): """Hel
考虑这段 Python3 代码: def classic_fibonacci(limit: int) -> List[int]: nums = [] curr, nxt = 0, 1
令人惊讶的 ipython 魔法 %timeit 错误: In[1]: a = 2 In[2]: %timeit a = 2 * a Traceback (most recent call last)
我有一个函数 f(x),它将 0 和 1 之间的 100 个随机 float 的列表 x 作为输入。不同的列表将导致不同的运行时间f. 我想知道 f 在大量不同的随机列表上平均运行多长时间。最好的方法
我想检查在合并 2 个数据帧时使用数字查找值是否比使用字符串查找值更快。为此,我将 %timeit 与以下代码一起使用: 合并字符串查找值: %timeit newframe = subframe.m
我正在计时从 python set 和 list 中删除元素。我的列表 timeit 代码引发了 ValueError: ... x not in list,但仅当我使用 timeit 运行不止一次迭
我想以便宜的方式测量函数的执行时间,如下所示: def my_timeit(func, *args, **kwargs): t0 = time.time() result = func
我想在 Python 3.5 中使用 timeit 来测量两个函数。第一个依赖于 import math,第二个依赖于 from math import log2。虽然我可以通过在调用 timeit.
更新:显然我只是在计时 Python 读取列表的速度。但这并没有真正改变我的问题。 所以,我前几天读了 this post 并想比较一下速度。我对 Pandas 还不熟悉,所以每当我看到有机会做一些比
假设这样一个数据 In [51]: data = list(range(10**6))
谁能解释一下为什么会这样? aatiis@aiur ~ $ time python /usr/lib64/python2.7/timeit.py -n 1 \ -- 'x = 10**1000
我是一名优秀的程序员,十分优秀!