【问题标题】:Guidance on optimising Python runtime for embedded systems with low system resources为低系统资源的嵌入式系统优化 Python 运行时指南
【发布时间】:2010-12-02 13:51:29
【问题描述】:

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

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

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

a) Python 运行时的启动时间可能长达 25 秒(在导入相关库时,以及它们的依赖项时)

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

如果我们能够缓解这些问题,我们对 Python 的使用将得到显着改善。 SO 社区的任何指导都将非常有价值。尤其是那些了解 Python 执行引擎如何运行的内在知识的人。

【问题讨论】:

    标签: python performance memory embedded garbage-collection


    【解决方案1】:

    也许很难相信,但 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 秒要好。

    【讨论】:

    • 我们将尝试过渡到 Python 2.6,并应用补丁并尽快报告结果。谢谢。如果您对这方面有任何见解,那么任何关于如何优化模块导入和初始化性能的想法也会很棒,尽管我怀疑这高度依赖于我们正在加载的模块的性质——这些模块太多了,无法列出。
    • 如果可以的话,我会为这个问题捐赠代表以悬赏。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-20
    相关资源
    最近更新 更多