为了账号安全,请及时绑定邮箱和手机立即绑定

如何在Python中显式释放内存?

如何在Python中显式释放内存?

婷婷同学_ 2019-06-12 21:17:44
如何在Python中显式释放内存?我编写了一个Python程序,它对一个大型输入文件进行操作,以创建数百万个表示三角形的对象。算法是:读取输入文件处理文件并创建由顶点表示的三角形列表。以OFF格式输出顶点:一个顶点列表,后面是三角形列表。三角形由顶点列表中的索引表示。在打印三角形之前,必须打印出完整的顶点列表,这意味着在将输出写入文件之前,必须将三角形列表保存在内存中。同时,由于列表的大小,我得到了内存错误。告诉Python我不再需要一些数据,并且可以释放它,最好的方法是什么?
查看完整描述

3 回答

?
慕丝7291255

TA贡献1859条经验 获得超6个赞

不幸的是(取决于Python的版本和发行版),某些类型的对象使用“空闲列表”,这是一种整洁的本地优化,但可能会导致内存碎片,特别是通过将越来越多的内存“指定”到特定类型的对象,从而使“普通基金”无法使用。

唯一真正可靠的方法是确保内存的大量但临时使用能够在系统完成时将所有资源返回给系统,那就是在一个子进程中进行这种使用,该子进程会完成需要内存的工作,然后终止。在这种情况下,操作系统将完成其工作,并乐于回收子进程可能占用的所有资源。幸运的是,multiprocessing在Python的现代版本中,模块使这种操作(过去相当痛苦)不算太糟糕。

在您的用例中,子进程积累一些结果并确保这些结果对主进程可用的最佳方法似乎是使用半临时文件(我指的是半临时文件-我的意思是,不是那种在关闭时自动消失的文件,而是在您完成所有操作时显式删除的普通文件)。


查看完整回答
反对 回复 2019-06-12
  • 3 回答
  • 0 关注
  • 1755 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信