python如何处理内存分配?

时间:2016-05-17 12:10:07

标签: python python-3.x

Python如何处理内存分配?作为开发人员,在使用Python创建大型应用程序时需要考虑内存分配是否有任何相关内容,或者我应该相信Python以最佳方式管理它?

1 个答案:

答案 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代码以作为硬件服务器上的进程集合的一个元素运行。您未明确解除分配的内存可能是某些其他进程需要的内存。