我正试图控制我的程序内存占用。我想我会从导入开始,因为我只使用了相当大的PyObjC
库中的 3-4 个函数。然而,我有点惊讶地看到,导入更大模块的特定部分与实际加载到内存中的内容几乎为零。
内存分析器输出
在 OSX 上加载整个 Quartz.CoreGraphics 库:
Line # Mem usage Increment Line Contents
================================================
77 @profile
78 7.953 MB 0.000 MB def test_import_all():
79 26.734 MB 18.781 MB import Quartz.CoreGraphics as CG
它以将近 19MB 的大小拉入整个库。
试图只提取我需要的东西会得到相同的 19MB 结果:
Line # Mem usage Increment Line Contents
================================================
82 @profile
83 7.941 MB 0.000 MB def test_import_some():
84 26.727 MB 18.785 MB from Quartz.CoreGraphics import CGImageGetWidth
因此,似乎特定的导入与实际加载的内容无关。
只需要一个巨大模块中的一小部分功能似乎是一个常见的用例。有没有办法只将我需要的模块从模块加载到内存中,或者这只是使用外部库的结果?