05 2022 档案
发表于 2022-05-25 09:34阅读次数:1143评论次数:0
摘要:有这样一个场景,如果一个缓存的字典中保存了key为id,value为某大型对象这样的键值对。当大型对象被删除`del object`之后,字典中保存的键值对依然不会被删除。因为字典存在,大型对象的引用计数会增加1。由于大型对象一直被引用,内存不能释放。
使用弱引用字典来保存如上的键值对,当大型对象删除时,缓存字典中的键值对也会被删除。能够有效释放内存。
阅读全文 »
发表于 2022-05-13 09:38阅读次数:294评论次数:0
摘要:Python是一门动态语言,可以在运行过程中,修改实例的属性和增删方法。任何实例都包含一个字典`__dict__`,该字典保存了实例所有的属性和方法。Python也通过这个字典可以将任意属性绑定到实例上。
有时候在实例的生命周期中处于安全等考虑只能操作固定的属性,不想增加属性,这时就可以通过`__slots__`来就可以定义一个集合,只有在这个集合中的属性才能被操作。
阅读全文 »
发表于 2022-05-09 10:20阅读次数:2326评论次数:0
摘要:看到这个标题你可能想一个分块能有什么难度?还值得细说吗,最近确实遇到一个有意思的分块函数,写法比较巧妙优雅,所以写一个分享。
日前在做需求过程中有一个对大量数据分块处理的场景,具体来说就是几十万量级的数据,分批处理,每次处理100个。这时就需要一个分块功能的代码,刚好项目的工具库中就有一个分块的函数。拿过函数来用,发现还挺好用的,传入列表和分块大小,然后就能遍历取出分好的数据。
阅读全文 »