常用鏈接

          統計

          最新評論

          Python 小塊空間內存管理TEST ref from: http://www.javaeye.com/topic/309753

          mport time

          def test():
             for i in range ( 1000000 * 10 ):
                  del i

          if ( __name__ == "__main__" ):
              test()
              while ( True ):
                  time.sleep( 1 )
          觀察mem:內存維持不變! 

          從這點可以猜測:python不是立即釋放資源的.

          個人測試代碼:
          -----------------------------------------------test0.py-------------------------------------

          import time

          def test():
              for i in range ( 1000000 * 10 ):
                  del i


          def test_2():
              #i = range ( 1000000 * 10 )
              #del i
              pass

          def test_3():
              #i = "*" * ( 1000000 * 10 )
              #del i
              pass


          if ( __name__ == "__main__" ):
              for i in range( 10 ):
                  test()
                  test_2()
                  test_3()
                  time.sleep( 1 )
              while ( True ):
                  time.sleep( 1 )
          -----------------------------------------------------test0.py-------------------------------------- 

          運行 python test0.py

          "while ( True ):
                  time.sleep( 1 )
           "
          保證python不退出.

          發現python的內存占用率為60%.

           

          如何解決這個問題呢?看下面的:

          -----------------------------------------------test1.py-------------------------------------

          #coding=utf-8
          import time

          max_number = 1000000 * 10
          def test_0():
              for i in range ( max_number ):
                  del i

          def test_1():
              for i in range( 1000 ):
                  for i in range ( max_number / 1000 ):
                      del i

          if ( __name__ == "__main__" ):
              #test_0()#內存使用率占40%
              test_1()#內存使用率占0.2%
           
              print "---------------------"
              while ( True ):
                  time.sleep( 1 )

          -----------------------------------------------test1.py-------------------------------------

           我想問題:問題也許解決了.

          這就要看你的實際需求是什么了.

          例如:

          我做過一個爬蟲程序,如果不斷往這個線程里面傳遞url,那么這個線程不到一會就掛了.我的改進方法:就是控制這線程能夠接受的url隊列長度.以及其他的優化.
           其實這個不是循環導致的內存被python持有,而是range( n )讓python分配了很多的內存.退出test(),python回收內存,但是python并不釋放了,而是讓pool持有內存空間.

          posted on 2009-11-27 16:54 九寶 閱讀(468) 評論(1)  編輯  收藏 所屬分類: Python

          評論

          # re: Python 內存管理 ref from: http://www.javaeye.com/topic/309753 2009-11-28 21:53 bzp

          Python 的確在某些方面很有優勢  回復  更多評論   

          主站蜘蛛池模板: 菏泽市| 和顺县| 五原县| 从化市| 嘉善县| 德昌县| 秦皇岛市| 海南省| 闽清县| 桂东县| 万宁市| 榕江县| 福贡县| 兴隆县| 大庆市| 新绛县| 盖州市| 莫力| 惠水县| 达州市| 鄢陵县| 新绛县| 乡城县| 海城市| 吉隆县| 卢湾区| 澄江县| 高淳县| 手机| 招远市| 五峰| 富裕县| 石首市| 独山县| 台中县| 互助| 定州市| 通辽市| 镇赉县| 安溪县| 宿迁市|