这就是我正在做的事情:
In [9]: setup = '''
import my_module
generator = my_module.any_func(1, 'two')
'''
In [10]: timeit.timeit('list(generator)', setup=setup, number=1000)
Out[10]: 4.6911962032318115
如果我更改my_module
并运行
In [11]: timeit.timeit('list(generator)', setup=setup, number=1000)
再次,timeit
无法识别这些更改。目前我关闭IPython
并再次执行所有这些操作。
是否有可能更新timeit
的范围?像reload
?
答案 0 :(得分:1)
同时我避免使用这种“解决方法”不断重启python shell:
>>> import my_module
>>> setup = '''
>>> from __main__ import my_module
>>> generator = my_module.any_func
>>> '''
通过在python shell的my_module
范围内导入__main__
并在timeit
范围内返回它,可以通过__main__
范围重新加载变换
>>> reload(my_module)
这样做timeit
将使用重新加载的模块。
我尝试在reload(my_module)
的设置中执行timeit
,但这会引发NameError
。一方面,似乎timeit
的范围是永久性的,另一方面,通过reload
在此范围内访问是不可能的。这是一种黑魔法......