Я хочу удалить какой-то объект после того, как он вернул функцию
например

def  A():
    imgA = img_generator()
    return imgA

def  B():
     for i in range(1000000):
          imgB = A()

Если я хочу удалить использование памяти imgA A (). как мне это сделать?

0
user11173832 17 Дек 2019 в 19:05
1
В чем заключается проблема XY?
 – 
Sayse
17 Дек 2019 в 19:07
Сборка мусора в Python довольно умна, поэтому обычно вам не нужно беспокоиться о подобных вещах.
 – 
Chris_Rands
17 Дек 2019 в 19:09
1
Как вы думаете, когда именно вы хотите удалить imgA? Как вы думаете, когда он удаляется в опубликованном вами коде?
 – 
quamrana
17 Дек 2019 в 19:12
1
Во-первых: вы можете использовать return img_generator() и у вас нет этой переменной. Во-вторых: Python не дублирует объект, когда вы отправляете его из функции, но он отправляет скорее ссылку, поэтому, если вы действительно удаляете объект в imgA, вы также удаляете объект в imgB. Таким образом, нет необходимости удалять imgA
 – 
furas
17 Дек 2019 в 19:31

2 ответа

Вы можете сделать del imgA.

Я надеюсь, что это помогает С уважением

-2
dalyds 17 Дек 2019 в 19:09

Ссылка imgA каждый раз перезаписывается в цикле for, поэтому в памяти одновременно находится только один экземпляр imgA. Чтобы удалить использование памяти из переменных, вы можете сделать 2 вещи: использовать del imgA или передать его None следующим образом imgA = None. Разница в том, что в первом случае переменная полностью удаляется из namespace и отправляется в Garbage Collector, а во втором случае переменная все еще жива, но ее содержимое отправляется в {{X7 } } . Однако в python вам не следует беспокоиться об этих вещах, поскольку они обрабатываются автоматически для вас.

0
marcos 17 Дек 2019 в 19:25