Python 删除作为参数接收的对象

Python delete object received as parameter

我调用一个函数,给它一些非常大的对象。需要一些特定的东西,然后想从内存中删除它。这可以使用以下代码进行演示:

def main():
  obj = get_very_large_obj()
  func(obj)
  # obj i not longer used!


def func(obj):
  specific_value = obj.get_some_needed_value()
  del obj
  # Do some very long work
  return

函数 func 需要 obj 中的某些特定内容,并且一旦检索到它,我就不再驻留在内存中。我想做我的“长期工作”而不浪费它。

这能实现吗?

将大对象包装在列表中。然后你可以删除列表元素,对象将成为垃圾收集器。

def main():
    objlist = [get_very_large_obj()]
    func(objlist)

def func(objlist):
    specific_value = obj[0].get_some_needed_value()
    del obj[0]
    # Do some very long work
    return