189 8069 5689

Python中怎么优化程序占用的内存

今天就跟大家聊聊有关Python 中怎么优化程序占用的内存,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

网站设计制作过程拒绝使用模板建站;使用PHP+MYSQL原生开发可交付网站源代码;符合网站优化排名的后台管理系统;成都网站制作、网站设计、外贸网站建设收费合理;免费进行网站备案等企业网站建设一条龙服务.我们是一家持续稳定运营了10年的创新互联网站建设公司。

假设我现在有一个字典是这样的:

animal = {'Monkey': monkey_obj, 'Tiger': tiger_obj, 'Panda': panda_obj}

其中monkey_obj, tiger_obj,  panda_obj都是对象。在我们的程序中,可能会传入不同的字符串来读取不同的对象。当我们把这些对象放进字典中的时候,它的引用计数已经被+1了。

但是,panda_obj这个对象比较特殊,它只会在程序运行的早期被查出来使用1次。之后就再也不会使用了。

但由于这个对象被放在字典里面,所以这个对象的引用计数始终大于0,Python 的垃圾回收机制就会认为这个对象还会被使用,于是它就会始终占用内存。

在数据处理领域或者图像处理领域,经常会出现字典的值占用大量内存的情况,这种情况就会导致内存的浪费。

为了解决这种情况,我们可以使用 Python  自带的weakref模块,它里面有一个WeakValueDictionary,就是用来处理这种情况的。

我们来看看如何使用它:

import weakref class Panda:     def __init__(self, name):         self.name = name          def walk(self):         print('我是一只熊猫,正在走路')  class Tiger:     pass   class Monkey:     pass panda = Panda('xyz') tiger = Tiger() Monkey = Monkey()   weak_dict = weakref.WeakValueDictionary() weak_dict['Panda'] = panda weak_dict['Tiger'] = tiger weak_dict['Monkey'] = moneky

使用 weak_dict 就像使用普通的字典一样。但赋值时,值的引用计数不会改变。

看完上述内容,你们对Python 中怎么优化程序占用的内存有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注创新互联行业资讯频道,感谢大家的支持。


分享文章:Python中怎么优化程序占用的内存
文章网址:http://cdxtjz.cn/article/jsejsp.html

其他资讯