gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-30 01:32:26 24 4
gpt4 key购买 nike

我必须加载这个巨大的对象 A(可以称重 almsot 10go),我需要将其传递给一个函数,该函数从中提取参数 B 以进一步对其进行一些繁重的计算。

A = load(file)

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

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

有办法吗?谢谢!

最佳答案

del A 将简单地从 function 的局部作用域中删除 A(参见 this answer)。 A 仍将保留在全局范围内。要将其从全局范围中删除,您可以使用闭包(并声明 global A)或使用 python3,您还可以使用关键字 nonlocal .但是,这只会从范围中删除绑定(bind),并不能保证释放相应的内存。当对象被垃圾收集 时会发生这种情况。您可以通过 gc 模块强制进行垃圾收集(参见 this answer )。

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

关于Python - 从函数内部删除(从内存中删除)变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41461169/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com