1. 程式人生 > >Learning Python 017 — Python2 和 Python3 的記憶體釋放

Learning Python 017 — Python2 和 Python3 的記憶體釋放

  • 使用的電腦系統:Windows 10 64位
  • 使用的開發整合環境:PyCharm 2016.1.4
  • 使用的Python的版本:python 2.7.10 和 python 3.5.0

學習Python的記憶體釋放知識點的動機

之前我學過很多Python的程式,偶然的一次,我開啟工作管理員,看到我寫的程式,執行時佔用了大量的記憶體,所以,我希望學會如何釋放記憶體,來優化我的程式,也不給電腦照成太大的負擔,所以,我想學會:Python的記憶體釋放這個知識點。

下面寫幾個實驗程式,裡面都是使用range() 函式來分配記憶體空間的。range()函式的詳細介紹,請見這篇部落格:range()函式在python2 和 python3中的使用介紹

Python2 記憶體釋放

未優化前的程式碼:

a = range(1000*10000)
while True:
    pass

Alt text

優化記憶體的程式碼:

使用手動釋放記憶體的方法來優化記憶體。

import gc
a = range(1000*10000)
del a
gc.collect()
while True:
    pass

可以看出,佔用的記憶體空間明顯減小了。

Alt text

既優化了記憶體,也優化了CPU 的程式碼

使用睡眠來優化CPU執行。

import gc
import time

a = range(1000*10000)
del a
gc.collect()
while True
: time.sleep(1.0) pass

Alt text

Python3 記憶體釋放

未優化前的程式碼:

a = range(1000*10000)
while True:
    pass

使用Python3庫執行未優化的程式碼,所需要的消耗的記憶體空間和使用Python2執行優化記憶體的程式碼消耗的記憶體空間 差不多。

Alt text

優化記憶體的程式碼:

import gc
a = range(1000*10000)
del a
gc.collect()
while True:
    pass

可以看出,所暫用的記憶體空間沒有任何增減。

Alt text

既優化了記憶體,也優化了CPU 的程式碼:

import
gc import time a = range(1000*10000) del a gc.collect() while True: time.sleep(1.0) pass

Alt text

總結

Python3 真的是比 Python2 更加的完善了,從這一點上也可以看出來,Python語言是第4代語言裡面非常傑出的語言。隨著它的不斷髮展,它會執行速度慢和記憶體消耗大的缺點會慢慢的消失(因為:許多Python內建庫是用C語言寫的)。我看好Python。