gpt4 book ai didi

使用 Cython 编译脚本时出现 Python RecursionError

转载 作者:太空宇宙 更新时间:2023-11-04 12:18:51 25 4
gpt4 key购买 nike

我有一个 python 应用程序,它可以在 python 上完美运行,但在运行 cythonized 脚本时出现错误。

当我用 cython 编译脚本时,一切都编译正常,我在带有 Linux 的 Raspberry 上编译并在其上运行。

设置.py

from distutils.core import setup 
from Cython.Build import cythonize
setup(ext_modules=cythonize(["*.py"]),)

然后我运行 setup.sh 进行编译,并删除所有已编译的 *.py、*.c 和 *.pyc,以确保正在运行的是已编译的 *.so 文件。我编译除了我的 mainGUI.py 之外的所有东西,它是基于 PySide 的,它总是在编译时中断。

设置.sh

sudo python3 ./setup.py build_ext --inplace
find . -name \*.py -delete
find . -name \*.c -delete
sudo rm -r ./__pycache__
sudo rm -r ./build

然后我运行我的应用

sudo python3 mainGUI.py

一切似乎都正常,GUI 出现了,菜单正常工作,但是当我读取终端时,我多次得到这个输出:

RecursionError: maximum recursion depth exceeded while calling a Python object

但我不知道是什么 script.py 抛出了这个。我试过将一些 scripts.py 排除在编译之外,让它们以 .py 的形式运行(例如 mySQLdatabaseScript.py),并且 RecursionError 的数量减少了但没有消除。

因此,即使我的 GUI 运行并且看起来没有错误,我的大部分功能都无法正常工作,它们会抛出 RecursionError。

我读到我可以增加递归限制

sys.setrecursionlimit(1500)

但是我应该在哪里做呢?在 mainGUI.py 中?或者在每个 script.py 上?

我在这个过程中看到的一件事是 cython 没有让我的应用程序在内存上优化:/

谢谢:)

最佳答案

我有同样的错误。一模一样。我注意到只有当我使用 pyside“信号连接”功能时才会发生这种情况。例如,使用计时器显示时钟。

timer = QtCore.QTimer(self)
timer.timeout.connect(self.showTime) #will fail in every showTime Call
timer.start(1000)

我决定不使用计时器。好的。它现在有效。双击连接时出现同样的错误。这不好。连接单选按钮时出现同样的错误。

更新:解决方案,我转移到 PyQt5,并计划支付许可证。Cythonized 脚本与信号槽功能配合良好。

关于使用 Cython 编译脚本时出现 Python RecursionError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46602015/

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