代码之家  ›  专栏  ›  技术社区  ›  Salim Fadhley

如何衡量Python程序的总体内存需求

  •  2
  • Salim Fadhley  · 技术社区  · 17 年前

    我有一个用Python 2.4.4编写的财务定价应用程序,它作为Excel插件运行。Excel对所有加载项都有1GB的内存限制,因此,如果任何加载项进程试图分配的内存总量超过1GB,将导致Excel崩溃。

    实际上,我可以从常规windows提示符中提供从Excel生成的所有参数。这意味着,如果我有一个方法来发现进程本身的内存需求,我可以安全地推断,当从Excel运行时,它将使用类似的数量。

    我对内存分析器可能给出的细节不感兴趣:我不需要知道每个函数试图分配多少内存。我需要知道的是程序运行所需的最小内存量,我需要保证如果程序在1Gb的限制内运行,它将正常运行。

    有没有关于我如何做到这一点的建议?

    平台是Windows XP 32位、python 2.4.4

    2 回复  |  直到 17 年前
        1
  •  2
  •   Alex Martelli    17 年前

    this one 并将其设置为“轮询”过程,以获得获取正确峰值的好机会。

    job object 用一个 SetInformationJobObject 用一个 JOBOBJECT_EXTENDED_LIMIT_INFORMATION 结构具有合适的 ProcessMemoryLimit (例如1GB最大虚拟内存)和中的右标志 JOBOBJECT_BASIC_LIMIT_INFORMATION

    这种编程方法也允许测量峰值,但与使用已经打包好的工具相比,它已经够复杂了,因此我认为不推荐使用它。我不知道有哪种打包工具允许您使用作业对象来专门限制流程可用的资源(尽管听到有些工具是可用的,无论是免费的还是商业性的,我自己从未遇到过),我也不会感到惊讶。

        2
  •  1
  •   Community Mohan Dere    9 年前