gpt4 book ai didi

Python:删除项目时设置类 "leak"是否像字典一样?

转载 作者:太空狗 更新时间:2023-10-30 02:35:32 25 4
gpt4 key购买 nike

我知道 Python dict 会在删除项目时“泄漏”(因为项目的位置将被神奇的“已删除”值覆盖)......但是 set类的行为方式相同吗?保留一个集合,随着时间的推移从中添加和删除内容是否安全?

编辑:好的,我试过了,这是我发现的:

>>> import gc>>> gc.collect()0>>> nums = range(1000000)>>> gc.collect()0### rsize: 20 megs### A baseline measurement>>> s = set(nums)>>> gc.collect()0### rsize: 36 megs>>> for n in nums: s.remove(n)>>> gc.collect()0### rsize: 36 megs### Memory usage doesn't drop after removing every item from the set…>>> s = None>>> gc.collect()0### rsize: 20 megs### … but nulling the reference to the set *does* free the memory.>>> s = set(nums)>>> for n in nums: s.remove(n)>>> for n in nums: s.add(n)>>> gc.collect()0### rsize: 36 megs### Removing then re-adding keys uses a constant amount of memory…>>> for n in nums: s.remove(n)>>> for n in nums: s.add(n+1000000)>>> gc.collect()0### rsize: 47 megs### … but adding new keys uses more memory.

最佳答案

是的,set 基本上是一个哈希表,就像 dict 一样——接口(interface)上的差异并不意味着它“下面”有很多差异。偶尔,您应该复制集合 -- myset = set(myset) -- 就像您应该复制随着时间的推移定期进行许多添加和删除的字典一样。

关于Python:删除项目时设置类 "leak"是否像字典一样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2350050/

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