上Python中的變量調用del
。這是否立即釋放分配的內存或仍在等待垃圾收集器收集?像在java中一樣,顯式調用del
對內存何時被釋放沒有影響。的Python del語句
回答
del語句不回收內存。它會刪除一個引用,該引用會減少該值的引用計數。如果計數爲零,則可以回收內存。 CPython會立即回收內存,不需要等待垃圾收集器運行。
實際上,只需要用於回收環狀結構的垃圾收集器。
由於瓦利德·汗說,在他的評論中,Python的內存管理只是工作,你不必擔心。
「的名稱的缺失去那名從本地或全局命名空間的結合」。沒有更多,不少。它對名稱所指向的對象不做任何事情,除了減少它的refcount,並且如果refcount不爲零,即使GC運行時也不會收集對象。
此外,del語句似乎有點快於分配無(類似於Java的風格分配空一個變量來釋放它的內存...)。
比較:
import time, math
def measure_del():
start = time.time()
for i in range(0,int(math.pow(10,8))):
a = "123"
del a # <--- !!!
end = time.time()
print(end-start)
def measure_none():
start = time.time()
for i in range(0,int(math.pow(10,8))):
a = "123"
a = None # <--- !!!
end = time.time()
print(end-start)
的結果(在idle3.4運行):
>>> measure_del()
3.9930295944213867
>>> measure_del()
3.7402305603027344
>>> measure_del()
3.8423104286193848
>>> measure_del()
3.753770351409912
>>> measure_del()
3.7772741317749023
>>> measure_del()
3.815058946609497
>>> measure_none()
4.052351236343384
>>> measure_none()
4.130320072174072
>>> measure_none()
4.082390069961548
>>> measure_none()
4.100180625915527
>>> measure_none()
4.071730375289917
>>> measure_none()
4.136169672
爲什麼程序員如此着迷於與程序整體速度無關的事物速度? :) – 2018-02-19 17:38:15
好吧,它就像一包紙。例如。您可以購買500克紙張,重量爲80克/平方米或90克/平方米。如果你在一張紙上寫,你幾乎不會注意到有什麼不同。但是如果你比較兩種包裝,你會發現身高,體重和價格有明顯的差異。編寫好的代碼,平衡代碼的可讀性和機器級別的性能當然不是一個壞主意。 – Barpfotenbaer 2018-03-07 12:55:24
- 1. python del語句的魔術方法?
- 2. 蟒蛇 - 執行del語句早
- 3. Python if語句的語法?
- 4. Python的if語句
- 5. Python的if語句
- 6. Python的if語句
- 7. Python的if語句
- 8. Python的「if」語句
- 9. Python的if語句
- 10. Python if語句
- 11. Python if語句
- 12. Python語句
- 13. CTRL + ALT + DEL不WIN32API和Python
- 14. Python條件語句和if語句
- 15. python導入語句語義
- 16. Python「與」語句語法
- 17. Python:「del a」和「del(a)」之間是否有區別?
- 18. 的Python的SyntaxError(else語句)
- 19. Python的if語句的Java
- 20. Python 3 IF語句
- 21. MySQL UPDATE語句Python
- 22. Python if else語句
- 23. Python導入語句
- 24. python internsection if語句
- 25. Python循環語句
- 26. python 3.5 find_all語句
- 27. python,%和mysql語句
- 28. 展開python語句
- 29. Python輸入語句
- 30. Legit python if語句?
垃圾收集的一點是,你不必擔心,當內存被釋放約。那麼你爲什麼要擔心呢? – 2013-02-19 23:44:50
我正在處理大量流量並觀察到內存泄漏問題。我幾乎可以肯定這個問題不在Python腳本中,而只是試圖確定。 – ninja 2013-02-20 01:26:48