写Python代码时,我的典型工作流程是使用交互式提示符并执行类似以下的操作:
write function
repeat until working:
test function
edit function
一旦我确认一切正常,我将以非交互模式运行代码并收集结果。
有时函数运行速度有点慢,必须进行优化。
我有兴趣使用Cython优化这些缓慢的函数,但是我想保持我的交互式工作流程,即运行函数,进行更改,再次运行。
有没有简单的方法可以做到这一点?
到目前为止,我已经尝试将我的Cython函数放入一个单独的模块 "my_functions.pyx":
def fun1(int x):
return x + 130
def fun2(int x):
return x / 30
然后在交互式提示符下运行:
import pyximport; pyximport.install()
import my_functions as mf
mf.fun1(25)
这可以在第一次运行时工作,但我想对我的Cython函数进行更改并在同一个交互会话中重新加载它们。
运行中
import my_functions as mf
完全不更新这些函数。 而且运行
reload(mf)
出现错误: No module named my_functions
唯一有效的方法是退出当前会话,重新启动ipython,然后再次导入模块。但这样做基本上破坏了交互式运行的好处。
有更好的方法在Cython中进行交互式函数优化吗?
如果没有,您能描述一些其他使用Cython优化代码的方法吗?
任何帮助都将不胜感激。