我想知道在 Jupyter 中工作的单元的 CPU 时间。我把 %%time 放在单元格的顶部。它打印出墙上时间。但我无法将此时间值存储在变量中?
你能帮我一下吗?
谢谢。
Dun*_*nes 10
没有办法存储%time
魔法的结果,但你可以存储魔法的结果%timeit
。魔法timeit
更加可配置。因此,如果您希望它的行为与%time
您需要配置的完全一样,请这样做。-n1 -r1 and -o
在以下代码中使用了参数。这里的-n1
意思是在循环中运行代码 n (1) 次。-r1
表示运行循环r(1)次并取最好的结果。您不需要使用这些标志,它们只是意味着您会更快地获得结果。如果您确实使用它们,那么结果将更具代表性。魔法会尝试为n
和选择合理的值r
。这意味着无论您的代码有多快或多快,您都应该在大约相同的时间内获得结果。因此,您可能不想使用它们。最后,-o
意味着返回一个结果对象(而不是仅仅打印结果)。
例如。
\n\nIn [1]: result = %timeit -n1 -r1 -o sum(range(1000000))\n\n53.7 ms \xc2\xb1 0 ns per loop (mean \xc2\xb1 std. dev. of 1 run, 1 loop each)\n\nIn [2]: print(result)\n print(result.average)\n\n 53.7 ms \xc2\xb1 0 ns per loop (mean \xc2\xb1 std. dev. of 1 run, 1 loop each)\n 0.05373367803767323\n
Run Code Online (Sandbox Code Playgroud)\n\n单元魔法有点复杂,因为你不能直接分配它的结果。
\n\nIn [1]: %%timeit -o \n sum(range(1000000))\n\n 24.8 ms \xc2\xb1 1.18 ms per loop (mean \xc2\xb1 std. dev. of 7 runs, 10 loops each)\n\nOut[1]: <TimeitResult : 24.8 ms \xc2\xb1 1.18 ms per loop (mean \xc2\xb1 std. dev. of 7 runs, 10 loops each)>\n\nIn [2]: result = _ # or result = Out[1]\n
Run Code Online (Sandbox Code Playgroud)\n
您还可以定义自己的函数,该函数在单元格的开头和结尾处接收时间戳。例如:
import time
def exec_time(start, end):
diff_time = end - start
m, s = divmod(diff_time, 60)
h, m = divmod(m, 60)
s,m,h = int(round(s, 0)), int(round(m, 0)), int(round(h, 0))
print("Execution Time: " + "{0:02d}:{1:02d}:{2:02d}".format(h, m, s))
Run Code Online (Sandbox Code Playgroud)
然后运行如下:
start = time.time()
...
...
end = time.time()
exec_time(start,end)
Run Code Online (Sandbox Code Playgroud)
这将以 hh:mm:ss 格式打印出执行时间。
归档时间: |
|
查看次数: |
6928 次 |
最近记录: |