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多处理 - 调试OSError:[Errno 12]无法分配内存
- 6. 无法在多处理中分配内存python
- 7. 如何处理C#内存分配(地址空间碎片)
- 8. 如何添加新的内存分配器来处理低内存?
- 9. 在Linux中如何处理内存分配小于PAGE_SIZE的内存?
- 10. c#如何处理内存
- 11. 如何在重新分配指针时处理手动内存管理?
- 12. NSMutableData如何分配内存?
- 13. 如何从嵌入式ARM处理器的某个物理内存中分配一块内存?
- 14. 处理内存
- 15. 分配和释放内存VS.首先分配,每次只处理
- 16. 如何分配处理程序来处理任何URL?
- 17. 当需要极高的可靠性时,如何处理动态内存分配?
- 18. 当使用“shmget”分配大块内存时,System V IPC如何处理碎片?
- 19. 处理容器类中的动态分配内存
- 20. 分配给属性的NSMutableArray的正确内存处理?
- 21. ANSI C中的字符串处理(内存分配)
- 22. 内存分配
- 23. 内存分配
- 24. 内存分配
- 25. 内存分配
- 26. 内存分配
- 27. 内存分配
- 28. 内存分配
- 29. 内存分配
- 30. 分配内存
[阅读文档](https://docs.python.org/3/c-api/memory.html) – CoryKramer
文档说“Python内存管理器”管理内存,但不回答问题(或者至少不在该部分中)关于开发者是否需要考虑什么。我猜想关键的一点是要确保多余的物体能够被垃圾收集等。我将回答这个问题给一个比我更了解这个问题的人。 – neil
尼尔是对的,我读过文档,但我不确定自己是否应该做任何事情。 –