Python如何處理內存分配?作爲開發人員,在使用Python創建大型應用程序時需要考慮的內存分配是否與內存分配有關?還是我應該相信Python以最佳方式管理這些內存?python如何處理內存分配?
1
A
回答
3
Python會爲您處理分配,但在某些情況下,您應該顯式釋放以停止Python或更廣泛的系統在內存上運行不足。 del x
從附加的任何數據中刪除名稱x
,並且如果數據引用計數變爲零,那麼當下一次調用垃圾回收器時,該數據有資格進行垃圾回收。在程序失敗之前肯定會發生這種情況,因爲它的內存不足。
您可以顯式調用垃圾回收器(標準Python模塊gc
)。 gc.collect()
告訴它立即做一個完整的收集,如果你不希望它隨機發生在隨後的時間。你可以做很多其他事情來調整其行爲以滿足程序的需求。例如,您可以禁用並重新啓用它,其中一段代碼的實時行爲很重要,其臨時對象的流失很輕微。有關更多信息,請參閱https://docs.python.org/3/library/gc.html。
對象的垃圾收集可能發生在重要的外部實體整理時。最簡單的例子是f=open("some.file" ,"w")
。如果您不使用with
或調用f.close()
,則文件保持打開狀態,直到程序終止或者f
被垃圾收集爲止。
你需要知道嗎?通常不需要像Gbytes那樣備用的單用戶系統,就像普通的臺式電腦一樣。也許是的,如果你正在編寫Python代碼來作爲一個難以壓制的服務器上的進程集合中的一個元素來運行。您不明確釋放的內存可能是某些其他進程需要的內存。
+0
謝謝你的回答,這正是我想要的。 –
相關問題
- 1. Python如何處理內存?
- 2. 重新分配內存處理
- 3. 多處理。池內存分配錯誤
- 4. 如何處理Python的內存不足
- 5. 無法在多處理中分配內存python
- 6. Python多處理 - 調試OSError:[Errno 12]無法分配內存
- 7. lucene:如何管理內存分配?
- 8. 如何處理C#內存分配(地址空間碎片)
- 9. cuSPARSE和cuBLAS庫如何處理使用cudaMallocPitch分配的內存?
- 10. 在Linux中如何處理內存分配小於PAGE_SIZE的內存?
- 11. 如何添加新的內存分配器來處理低內存?
- 12. c#如何處理內存
- 13. 虛擬內存分配沒有物理內存分配
- 14. 如何在重新分配指針時處理手動內存管理?
- 15. NSMutableData如何分配內存?
- 16. javascript如何分配內存?
- 17. Python如何在分隔符不存在時處理分割?
- 18. 如何從嵌入式ARM處理器的某個物理內存中分配一塊內存?
- 19. 處理內存
- 20. 分配和釋放內存VS.首先分配,每次只處理
- 21. 如何分配處理程序來處理任何URL?
- 22. Python多處理 - 共享內存
- 23. Python的多處理和內存
- 24. 當需要極高的可靠性時,如何處理動態內存分配?
- 25. 當使用「shmget」分配大塊內存時,System V IPC如何處理碎片?
- 26. 如何處理python雜散屬性分配
- 27. 事件處理程序分配和內存泄漏
- 28. 處理容器類中的動態分配內存
- 29. 分配給屬性的NSMutableArray的正確內存處理?
- 30. ANSI C中的字符串處理(內存分配)
[閱讀文檔](https://docs.python.org/3/c-api/memory.html) – CoryKramer
文檔說「Python內存管理器」管理內存,但不回答問題(或者至少不在該部分中)關於開發者是否需要考慮什麼。我猜想關鍵的一點是要確保多餘的物體能夠被垃圾收集等。我將回答這個問題給一個比我更瞭解這個問題的人。 – neil
尼爾是對的,我讀過文檔,但我不確定自己是否應該做任何事情。 –