作家
登录

Python性能优化

作者: 来源: 2017-08-08 10:47:41 阅读 我要评论

  1. case 1: 
  2.  
  3. a, b = SomeClass(), SomeClass() 
  4.  
  5. a.b, b.a = b, a 
  6.  
  7.   
  8.  
  9. case 2: 
  10.  
  11. lst = [] 
  12.  
  13. lst.append(lst) 
  14.  
  15. case 3: 
  16.  
  17. self.handler = self.some_func  

当然,大年夜家可能说,谁会这么傻,写出如许的代码,是的,膳绫擎的代码太明显,傍边间多几个层级之后,就会出现“借居”的轮回应用。在python的标准库 collections琅绫擎的OrderedDict就是case2:

要解决轮回引用,第一个办法是应用弱引用(weakref),第二个是手动解轮回引用。

第四:setcheckinterval

如不雅法度榜样肯定是单线程,那么修改checkinterval为一个更大年夜的值,这里有介绍。

第五:应用__slots__

slots最重要的目标是用来节俭内存,然则也能必定程度上进步机能。我们知道定义了__slots__的类,对某一个实例都邑预留足够的空间,也就不会再主动创建__dict__。当然,应用__slots__也有很多留意事项,最重要的一点,持续链上的所有类都必须定义__slots__,python doc有具体的描述。下面看一个简单的测试例子:

  1. class BaseSlots(object): 
  2.  
  3.     __slots__ = ['e''f''g'
  4.  
  5.   
  6.  
  7. class Slots(BaseSlots): 
  8.  
  9.     __slots__ = ['a''b''c''d'
  10.  
  11.     def __init__(self): 
  12.  
  13.         self.a = self.b = self.c = self.d = self.e = self.f  = self.g = 0 
  14.  
  15.   
  16.  
  17. class BaseNoSlots(object): 
  18.  
  19.         pass 
  20.  
  21.   
  22.  
  23. class NoSlots(BaseNoSlots): 
  24.  
  25.     def __init__(self): 
  26.  
  27.         super(NoSlots,self).__init__() 
  28.  
  29.         self.a = self.b = self.c = self.d = self.e = self.f  = self.g = 0 
  30.  
  31.   
  32.  
  33. def log_time(s): 
  34.  
  35.     begin = time.time() 
  36.  
  37.     for i in xrange(10000000): 
  38.  
  39.         s.a,s.b,s.c,s.d, s.e, s.f, s.g 
  40.  

  41.   推荐阅读

      做大数据真的能赚钱吗?

    于IT业内,大年夜数据之火热程度,似乎无出其右者。当然,在颇┞锋正爆发前夕,也应当合时泼盆冷水。谁能接触到数据国内冠以大年夜数据之名的企业数以千计,但细分其专注范畴,大年夜致可>>>详细阅读


    本文标题:Python性能优化

    地址:http://www.17bianji.com/lsqh/36589.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)