ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Python – 从函数内部删除(从内存中删除)变量?

2019-07-06 01:57:57  阅读:556  来源: 互联网

标签:python optimization memory global-variables del


我必须加载我需要传递给函数的这个大型对象A(可以加权almsot 10go),它从中提取一个参数B以进一步对它施加一些繁重的计算.

A = load(file)

def function(A):    
   B = transorm(A)    
   B = compute(B)
   return(B)

为了释放一些内存(因为我已经有了一个MemoryError),我想在转换为B后立即从内存中删除A.
我尝试了del但它似乎并没有影响脚本级别的A的存在.我也尝试了del global()[“A”],但它说A没有被定义为全局变量.

有办法吗?谢谢!

解决方法:

del A将简单地从本地函数范围中删除A(参见this answer). A仍然会在全球范围内持续存在.要从全局范围中删除它,您可以使用闭包(并声明全局A)或使用python3,也可以使用关键字nonlocal.但是,这仅从范围中删除绑定,并不保证释放相应的内存.当对象被垃圾收集时会发生这种情况.您可以通过gc模块强制进行垃圾回收(参见this answer).

但是,如果您遇到内存问题,而不是加载整个数据集,您可以使用视图到数据集,并且一次只处理(加载)它的一部分(即流处理数据).

标签:python,optimization,memory,global-variables,del
来源: https://codeday.me/bug/20190706/1392729.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有