我通常像这样在jupyter笔记本中使用timeit:
def some_function():
for x in range(1000):
return x
timeit(some_func())
并获得如下结果:
6.3 ms ± 42.5 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
但是今天我遇到了这样的错误:
TypeError Traceback (most recent call last)
<ipython-input-11-fef6a46355f1> in <module>
----> 1 timeit(some_func())
TypeError: 'module' object is not callable
它如何发生?
答案 0 :(得分:0)
您当前正在尝试执行timeit
模块,而不是其中包含的功能。
您应该将导入语句从import timeit
更改为from timeit import timeit
。或者,您可以使用timeit.timeit
调用该函数。
答案 1 :(得分:0)
搜索并尝试了一段时间后,我意识到,当我们想使用timeit(some_function())
时,我们并不需要import timeit
,但应将其写在jupyter笔记本的另一个输入中,如下所示:
IN [1]:
def some_function():
for x in range(1000):
return x
IN [2]:
timeit(some_func())
,我们将获得如下输出:
280 ns ± 2.78 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
当我们在这样的一个输入中编写它时:
IN [1]:
def some_function():
for x in range(1000):
return x
timeit(some_func())
我们将得到一个未定义的错误时间,并且当我们“导入时间”时,将收到另一个错误,就像我在问题TypeError: 'module' object is not callable
上产生的一样。
因为我们import timeit
时需要指定stmt和设置(如果可用),例如:
import timeit
SETUP = """
import yourmodul_here
"""
TEST_CODE = """
def some_function():
for x in range(1000):
return x
"""
timeit.timeit(stmt=TEST_CODE, setup=SETUP, number=2000000)
我们将得到如下输出:
0.12415042300017376
TEST_CODE
之前需要加载的内容所以,当我们导入时间时,我想写更多。