Learning Python 017 — Python2 和 Python3 的記憶體釋放
阿新 • • 發佈:2019-01-03
- 使用的電腦系統: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
優化記憶體的程式碼:
使用手動釋放記憶體的方法來優化記憶體。
import gc
a = range(1000*10000)
del a
gc.collect()
while True:
pass
可以看出,佔用的記憶體空間明顯減小了。
既優化了記憶體,也優化了CPU 的程式碼
使用睡眠來優化CPU執行。
import gc
import time
a = range(1000*10000)
del a
gc.collect()
while True :
time.sleep(1.0)
pass
Python3 記憶體釋放
未優化前的程式碼:
a = range(1000*10000)
while True:
pass
使用Python3庫執行未優化的程式碼,所需要的消耗的記憶體空間和使用Python2執行優化記憶體的程式碼消耗的記憶體空間 差不多。
優化記憶體的程式碼:
import gc
a = range(1000*10000)
del a
gc.collect()
while True:
pass
可以看出,所暫用的記憶體空間沒有任何增減。
既優化了記憶體,也優化了CPU 的程式碼:
import gc
import time
a = range(1000*10000)
del a
gc.collect()
while True:
time.sleep(1.0)
pass
總結
Python3 真的是比 Python2 更加的完善了,從這一點上也可以看出來,Python語言是第4代語言裡面非常傑出的語言。隨著它的不斷髮展,它會執行速度慢和記憶體消耗大的缺點會慢慢的消失(因為:許多Python內建庫是用C語言寫的)。我看好Python。