有关使用低系统资源优化嵌入式系统的Python运行时的指南

时间:2009-09-30 08:25:54

标签: python performance memory embedded garbage-collection

我的团队正在将Python 2.4.4运行时整合到我们的项目中,以便利用一些外部开发的功能。

我们的平台具有450Mhz SH4应用程序核心和有限的内存,供Python运行时和应用程序使用。

我们移植了Python,但初步测试突出了以下障碍:

a)Python运行时的启动时间可能低至25秒(导入相关库时,依次导入其依赖项)

b)Python似乎永远不会在垃圾收集期间向操作系统释放内存 - 唯一的办法是关闭运行时并重新启动(导致上面提到的启动延迟,这通常是不切实际的)

如果我们可以缓解这些问题,我们将大大改进Python的使用。 SO社区的任何指导都非常有价值。尤其是那些了解Python执行引擎如何运行的内在知识的人。

1 个答案:

答案 0 :(得分:5)

也许很难相信,但CPython版本2.4 never releases memory to the OS。据称这是在Python 2.5版中修复的。

此外,在Python 2.5和Python 2.6之上,性能(处理器方面)得到了改进。

请参阅C API section in What's new in Python 2.5,查找名为 Evan Jones的obmalloc补丁的项目

Alex Martelli(至少应该考虑他的建议),says multiprocess is the only way to go to free memory.如果你不能使用multiprocessing(Python 2.6中的模块),os.fork至少可用。以最原始的方式使用os.fork(在开始时分叉一个工作进程,等待它完成,分叉一个新的...)仍然比重新启动解释器支付25秒更好。