我有以下代码,其中我重新分配了多个GB的列表:
res = self.dict_cursor.fetchall()
res_with_offers = []
# we add in HDBUY, SDBUY for now -- HARDCODED
for item in res:
for avail_code in ['HDBUY', 'SDBUY']:
_item = deepcopy(item)
_item['avail_code'] = avail_code
res_with_offers.append(_item)
del res; # <== is this line needed?
res = res_with_offers
我的理解是del res;
,作为下面一行的变量重新分配,它将删除内存中初始的res
项。这是对的吗?为什么或者为什么不呢?在
标识符可以绑定到Python中的对象,也可以不绑定到任何对象。这就是全部。在
如果}不绑定到任何对象。这就是全部。它对是否释放内存没有直接影响。在
identifier
被绑定到一个对象,del identifier
将删除绑定,使{当移除与对象的最后一个绑定时,该对象就有资格进行垃圾回收。在那之前不会。在
在您展示的代码中,实际上无法确定最初绑定到
res
的对象何时有资格进行垃圾回收。据我们所知,例如
^{pr2}$fetchall()
从内部持久缓存返回了一个对象。那么将通过
res
删除与对象的绑定,但不会对对象的任何其他可能绑定产生影响。在所有绑定都消失之前,无法回收该对象。在在任何情况下,
del res
:没什么用。},而不管{}是否存在,{}的原始绑定也被移除,而不管{}是否存在。在
res
最终被绑定到{相关问题 更多 >
编程相关推荐