Python如何处理内存分配?作为开发人员,在使用Python创建大型应用程序时需要考虑内存分配是否有任何相关内容,或者我应该相信Python以最佳方式管理它?
答案 0 :(得分:4)
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备用的单用户系统上,例如普通的台式PC。可能是的,如果您正在编写Python代码以作为硬件服务器上的进程集合的一个元素运行。您未明确解除分配的内存可能是某些其他进程需要的内存。