python - 如何在timeit范围内更新代码?

标签 python scope reload timeit

这就是我正在做的事情:

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的范围?像重新加载之类的东西?

最佳答案

同时,我使用这个“解决方法”避免了 python shell 的不断重新启动:

>>> import my_module
>>> setup = '''
>>> from __main__ import my_module
>>> generator = my_module.any_func
>>> '''

通过在 python shell 的 __main__ 范围内导入 my_module 并在 timeit 范围内引用它,可以重新加载更改在 __main__ 范围内通过

>>> reload(my_module)

这样做timeit将使用重新加载的模块。

我尝试在 timeit 的设置中执行 reload(my_module),但这会引发 NameError。一方面,timeit 的作用域似乎是永久的,但另一方面,通过 reload 访问该作用域是不可能的。这是一种黑魔法……

关于python - 如何在timeit范围内更新代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36337921/

相关文章:

c++ - 从 `if constexpr` 分支扩展对象生命周期/范围

android - 在 tabhost 中重新加载一个 Activity

Webpack 和 Precss 不会在 @import 文件更改时重新加载

python - Pandas 数据框 : how to copy some columns in others according to a value in the row

python - 如何*不*在 ipython 笔记本(pandas 数据帧的 html 表)中显示 'NaN'?

python - 如何设置Excel选项按钮值(通过python)?

python - 在Python中使用ODEINT求解微分方程

Javascript promise 及其参数

AngularJS 和 Angular-UI Bootstrap 选项卡作用域

javascript - 简单的 javascript 重新加载不起作用