在编写 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)
给出错误:没有名为 my_functions 的模块
唯一可行的方法是退出当前会话,重新启动 ipython,然后重新导入模块。但是这种方式会扼杀交互式运行的好处。
有没有更好的方法来交互优化与 cython 的功能?
如果没有,您能否描述一些其他使用 cython 优化代码的方法?
任何帮助表示赞赏。