常用鏈接

          統(tǒng)計(jì)

          最新評(píng)論

          Python 小塊空間內(nèi)存管理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 )
          觀(guān)察mem:內(nèi)存維持不變! 

          從這點(diǎn)可以猜測(cè):python不是立即釋放資源的.

          個(gè)人測(cè)試代碼:
          -----------------------------------------------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-------------------------------------- 

          運(yùn)行 python test0.py

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

          發(fā)現(xiàn)python的內(nèi)存占用率為60%.

           

          如何解決這個(gè)問(wèn)題呢?看下面的:

          -----------------------------------------------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()#內(nèi)存使用率占40%
              test_1()#內(nèi)存使用率占0.2%
           
              print "---------------------"
              while ( True ):
                  time.sleep( 1 )

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

           我想問(wèn)題:問(wèn)題也許解決了.

          這就要看你的實(shí)際需求是什么了.

          例如:

          我做過(guò)一個(gè)爬蟲(chóng)程序,如果不斷往這個(gè)線(xiàn)程里面?zhèn)鬟furl,那么這個(gè)線(xiàn)程不到一會(huì)就掛了.我的改進(jìn)方法:就是控制這線(xiàn)程能夠接受的url隊(duì)列長(zhǎng)度.以及其他的優(yōu)化.
           其實(shí)這個(gè)不是循環(huán)導(dǎo)致的內(nèi)存被python持有,而是range( n )讓python分配了很多的內(nèi)存.退出test(),python回收內(nèi)存,但是python并不釋放了,而是讓pool持有內(nèi)存空間.

          posted on 2009-11-27 16:54 九寶 閱讀(465) 評(píng)論(1)  編輯  收藏 所屬分類(lèi): Python

          評(píng)論

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

          Python 的確在某些方面很有優(yōu)勢(shì)  回復(fù)  更多評(píng)論   

          主站蜘蛛池模板: 夹江县| 迁西县| 长岛县| 翁源县| 宜都市| 东乌珠穆沁旗| 和田县| 洪湖市| 宁津县| 苍溪县| 时尚| 裕民县| 柞水县| 通城县| 竹溪县| 明水县| 莱州市| 河北区| 曲水县| 云和县| 同心县| 通江县| 怀安县| 凤庆县| 金寨县| 大新县| 清徐县| 建德市| 延川县| 南投市| 屏南县| 瑞金市| 昭通市| 通江县| 兴海县| 天柱县| 乌苏市| 东兰县| 丹巴县| 鄄城县| 霸州市|