Importing a python module takes too much memory(导入一个python模块会占用太多内存)
本文介绍了导入一个python模块会占用太多内存的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在开发一个相当大的现有Python应用程序,我现在正在尝试减少它的内存使用量。
多亏了memory_profiler我得到了这个:
23 11.289 MiB 0.434 MiB from remote import settings
24 14.422 MiB 3.133 MiB from remote.controller import ChannelManager
25 14.422 MiB 0.000 MiB from remote import channel as channel_module
如您在第24行看到的,内存使用量增加了3.13MB。
为什么导入一个简单的类(ChannelManager)应该使用这么多内存?
ChannelManager不是一个复杂的类,它只是包装了一些逻辑(派生了一些进程和线程)。
谢谢您
推荐答案
除非这3 MB是一个问题,否则我会花时间分析应用程序本身,因为在您的实际清理逻辑中可能有容易摘到的果实。
当您import一个模块时,Python会将该模块编译成字节码(通常被视为.pyc文件)并将其内容存储到内存中。您正在导入的模块(例如remote.controller.ChannelManager)可能有很多行或引用了一个对象,从而使其编译后的形式占用了该空间。
ChannelManager对象的代价,要么选择一个较小的模块以降低使用率。我强烈建议使用前者,并寻找使用更多内存的代码部分--特别是如果您使用的是Python2.x,并且有些领域可以使用迭代器。
这篇关于导入一个python模块会占用太多内存的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
编程基础网
本文标题为:导入一个python模块会占用太多内存
基础教程推荐
猜你喜欢
- 使用生成器和迭代器时 Python 多循环失败 2022-01-01
- 与常规 dict 相比,Python manager.dict() 非常慢 2022-01-01
- 将 x 轴刻度更改为自定义字符串 2022-01-01
- 用 Python 编写 Fortran 无格式文件 2022-01-01
- pyserial - 可以从线程 a 写入串行端口,是否阻塞从线程 b 读取? 2022-01-01
- numpy float:比算术运算中内置的慢 10 倍? 2022-01-01
- 由Python将MP3转换为MIDI(类型错误:无法加载插件:mtg-Melodia:Melodia) 2022-01-01
- Discord.py 缺少必需的参数 2022-01-01
- 在 Celery 工作人员中捕获 Heroku SIGTERM 以优雅地关 2022-01-01
- 尝试制作WhatsApp机器人 2022-01-01
