常用鏈接

          統計

          最新評論

          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 的確在某些方面很有優勢  回復  更多評論   

          主站蜘蛛池模板: 开原市| 平武县| 色达县| 渝中区| 澎湖县| 沿河| 托克逊县| 湾仔区| 平顶山市| 比如县| 桓台县| 蒙阴县| 普宁市| 攀枝花市| 遵义市| 雷波县| 通江县| 伊宁市| 凤庆县| 万年县| 正镶白旗| 苗栗市| 富民县| 江西省| 景谷| 隆安县| 闵行区| 扶余县| 康定县| 普陀区| 德阳市| 灌云县| 高州市| 清涧县| 吕梁市| 潢川县| 南江县| 云龙县| 邮箱| 大宁县| 稻城县|