一个减少多进程下python内存占用的小技巧
2010-02-11 12:05
1066 查看
在python中如果要使用fork或者multiprocess来做多进程,假如import的库很多或者很大,例如wxpython,查看各进程的内存占用你会发现两个进程的内存占用基本上相同,换句话说,如果第二个进程根本不需要用到wx的内容,它也会被加载到内存当中去。就拿wx来做例子,没有import t wx占用大概8M+内存,一旦import wx,内存马上飚升到27M+,如此一来,两个进程就要占50m+。以上数据这只是对一个很小的python程序而言,要是一个需要导入很多库文件的程序,那情况可就不一样了。
经过几番尝试,笔者找到用__import__,在运行时再入库的方法。其实是非常简单的,例如以下例子:
这样就可以避免两个进程加载不必要的库而早成内存的浪费。
经过几番尝试,笔者找到用__import__,在运行时再入库的方法。其实是非常简单的,例如以下例子:
from multiprocessing.managers import BaseManager from multiprocessing import freeze_support import os class MyManager(BaseManager): pass global manager if __name__ == '__main__': freeze_support() manager = MyManager() switch = __import__("myclass",globals(),locals()) manager.register("C", myclass.C) manager.start() gui = __import__("mygui", globals(),locals()) mygui.manager = manager app = mygui.MyApp(0) app.MainLoop() manager.shutdown() os._exit(0)
这样就可以避免两个进程加载不必要的库而早成内存的浪费。
相关文章推荐
- 一个 Python 程序每一行的内存占用分析- 杨超(星辰海 | 真人图书馆·Python 程序员) - 42qu.com
- python统计某一个进程名所占用的内存
- Python 对象内存占用
- 定义一个大对象,直接放入OLD区(对象占用的对内存占总的设置的内存一半以上),容易发生FGC
- JAVA内存使用--如何计算一个Java对象占用的字节数
- 如何提高《个人助手》的运行速度,减少内存占用!
- 请教一下:Windows任务管理器中显示的进程占用的内存是什么内存? 分配的还是使用的? 另外,最小化一个进程的时候为什么其占用的内存会大大降低?谢谢
- 一个Java对象到底占用多大内存?
- 【JAVA内存】如何计算一个Java对象占用的字节数
- 为什么用流数据方式读取lob数据能减少内存的占用
- 养成“最小化”的习惯,减少程序占用的内存!
- 怎么减少Redis内存占用
- linux下,一个运行中的程序,究竟占用了多少内存
- JAVA内存使用--如何计算一个Java对象占用的字节数
- 【python】threadpool的内存占用问题
- 告诉你一个java对象占用的内存大小的方法
- 使用python编写一个监控使用内存并使用flask模块出图
- 使用python写一个监控不同机器的使用内存情况并使用flask出图
- 一个 jpg 在Android中所占用的内存大小
- 一个通用的AS3中监控flash帧数很内存占用的类