Python:当删除项目时,set类是否会“泄漏”,就像dict一样?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python:当删除项目时,set类是否会“泄漏”,就像dict一样?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1169字,纯文字阅读大概需要2分钟。
内容图文
![Python:当删除项目时,set类是否会“泄漏”,就像dict一样?](/upload/InfoBanner/zyjiaocheng/812/7922bd5afa314f8482d916e1bfc9f3bc.jpg)
我知道Python dicts会在删除项目时“泄漏”(因为项目的插槽将被魔术“删除”值覆盖)…但是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一样 – 界面上的差异并不意味着“低于”它的许多差异.偶尔,你应该复制set – myset = set(myset) – 就像你应该为dict一样,随着时间的推移定期进行许多添加和删除.
内容总结
以上是互联网集市为您收集整理的Python:当删除项目时,set类是否会“泄漏”,就像dict一样?全部内容,希望文章能够帮你解决Python:当删除项目时,set类是否会“泄漏”,就像dict一样?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。