无栈Python与PyQt

4 投票
2 回答
1697 浏览
提问于 2025-04-15 16:06

你对Stackless Python和PyQt有什么经验呢?

我希望大家能讨论以下几个问题:

  1. PyQt的编译:PyQt需要特别为Stackless编译吗?编译过程顺利吗?有没有绑定方面的问题等等。

  2. 稳定性:有没有遇到意外崩溃、卡顿、暂停或者其他奇怪的情况?

  3. 内存管理:有没有发现内存泄漏的迹象?Stackless和普通PyQt应用在内存使用上有什么比较?

  4. 软件工程提升:简要介绍一下Stackless支持的PyQt应用的控制流程模型。

  5. 经验教训:有没有什么痛苦的教训,应该避免的陷阱,或者你遇到的需要解决的问题?

保持快乐哦

2 个回答

0

如果你对速度优化感兴趣:

你可以看看 Unladen Swallow维基百科在这里)。谷歌正在开发一个针对Python的JIT编译器,因为YouTube完全是用Python写的,这个编译器可以让Python的运行速度提高5到10倍(这样就能更接近Java的速度,而不是现在的虚拟机速度)。最棒的是,它可以与所有现有的Python代码兼容,这意味着你不需要担心其他Python优化项目带来的各种问题。

我想,如果你正在开发一个足够大的项目,需要在底层进行优化,你可以先用普通的Python开发,等到Unladen Swallow正式发布后再切换到新的虚拟机。

0

几个月前我尝试过这个方法,但最后觉得不值得花这个力气。

我在Windows上成功安装了PyQt的二进制版本,并且使用的是一个没有栈的Python版本。不过,我发现我得手动修改一些文件。我遇到了一个错误信息(抱歉,我忘了具体是什么了),然后在网上搜索时找到了一些几年前的解决方案。新的代码没有包含那个旧的修复方法,所以修改起来并不太难(如果我没记错的话,修改是在Python里进行的,所以不需要重新编译)。

但这对我来说是个致命问题。Qt和PyQt会定期更新,我不想一直在修复代码。没有栈的Python和PyQt组合使用得不够多,所以没有经过充分的测试。我觉得调试起来会有很大的风险。尤其是考虑到没有栈的Python的作者已经转向了PyPy。提前道个歉——我希望我能找到一些关于作者停止开发没有栈的Python的资料,以及我需要修复的错误的更多细节——我没想到会在Stack Overflow上重复这些细节。

所以我选择在普通的Python上运行PyQt,而不是没有栈的版本。

顺便说一下,我觉得把信号/槽和没有栈的代码混在一起会很混乱,因为它们是解决多线程问题的完全不同的方法。

祝你好运!

撰写回答