gpt4 book ai didi

python - numba 似乎不起作用

转载 作者:太空宇宙 更新时间:2023-11-03 18:10:04 26 4
gpt4 key购买 nike

这是我为测试 numba 编写的一些代码

import time
from numba import autojit

@autojit
def triple_count(num):
start = time.time()
count=0.0
r=range(num)
for i in r:
for j in r:
for k in r:
count += i*j*k

runtime=time.time()-start
rate=num/runtime
print "%0.4f seconds" % runtime
print "rate : %0.3f per second" % rate
print "count: %s" % count

注释掉@autojit时的结果

2.3796 seconds
rate : 126.073 per second
count: 9.0216784125e+13

使用@autojit时的结果

0.0000 seconds

rate : 8065969.231 per second

count: 0.0

这里出了什么问题?

最佳答案

我首先会以不同的方式计时,而不是在方法中插入计时调用,而是返回结果,然后对方法调用计时:

from numba import autojit

def triple_count(num):
count=0.0
r=range(num)
for i in r:
for j in r:
for k in r:
count += i*j*k

return count

triple_count_numba = autojit(triple_count)

对于 num=200:

In [7]: triple_count(200)
Out[7]:
7880599000000.0

In [8]:triple_count_numba(200)
Out[8]:
7880599000000.0

In [9]: %timeit triple_count(200)
1 loops, best of 3: 747 ms per loop

In [10]: %timeit triple_count_numba(200)
100 loops, best of 3: 6.59 ms per loop

所以 numba 会产生与普通 python 相同的答案,并且得到的速度要快得多。使用 num=500 时,时间为 11.5 秒 vs 106 毫秒。我正在使用 numba 0.14.0。您可以在标准 python 脚本中以编程方式使用 timeit,但为了方便起见,我在 IPython 笔记本中使用 %magics 来使用它。

关于python - numba 似乎不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26154285/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com