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

sot*_*ozo 9 python memory embedded performance garbage-collection

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

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

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

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

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

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

u0b*_*6ae 5

也许很难相信,但CPython版本2.4 从未向操作系统释放内存.据称这是在Python 2.5中修复的.

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

请参阅Python 2.5中的新功能中C API部分,查找名为Evan Jones的obmalloc补丁的项目

Alex Martelli(至少应该考虑他的建议)说多进程是获取内存的唯一方法.如果你不能使用multiprocessing(Python 2.6中的模块),os.fork至少是可用的.以最原始的方式使用os.fork(在开始时分叉一个工作进程,等待它完成,分叉一个新的...)仍然比重新启动解释器支付25秒更好.