gpt4 book ai didi

python - 如何使用 pyximport 以交互方式重新加载 cython 模块

转载 作者:IT老高 更新时间:2023-10-28 20:32:29 32 4
gpt4 key购买 nike

在编写 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 函数并在同一个交互式 session 中重新加载它们。

运行

import my_functions as mf

根本不更新函数。并运行

reload(mf)

给出一个错误: 没有名为 my_functions 的模块

唯一可行的方法是退出当前 session ,重新启动 ipython,然后重新导入模块。但是这种方式会扼杀交互式运行的好处。

有没有更好的方法来以交互方式使用 cython 优化功能?

如果没有,您能否描述一些其他使用 cython 优化代码的方法?

感谢任何帮助。

最佳答案

我在“pyximport.install”函数中发现了一个文档记录不佳的功能,该功能允许重新加载 cython 模块。将此功能设置为 True,您可以交互地加载/重新加载您的 cython 模块,而无需重新启动 python。

如果您使用以下命令初始化 cython 模块:

import pyximport
pyximport.install(reload_support=True)
import my_functions as mf

您可以更改您的 cython 模块,然后重新加载:

reload(mf)

希望这对某人有用。

关于python - 如何使用 pyximport 以交互方式重新加载 cython 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17955194/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com