Python OrderedDict 存在内存泄漏的问题

2018-11-13 11:42:31 +08:00
 Buffer2Disk

不知道有 V 友们有用过这个类的吗? python 2.7 新加的

使用过程中发现貌似存在内存泄漏问题,用 pympler 监控对象的内存, 发现 OrderedDict 对象 和 list 随着时间不断的缓慢增长(OrderedDict 对象的数量没有增加,内存占用却不断缓慢的增长)

这里有一个关于 OrderedDict 内存泄漏的介绍: https://stackoverflow.com/a/46935255/2379891

不过我没有像文中作者那样去 clear,而是不断的 del orderedDict[key], dump 内存中的对象后,也发现了不少和文中作者所说的那种 self-referencing list

使用 OrderedDict 主要是为了实现一个 LRU 缓存(基于缓存失效时间 timeout),不知道 python 官方有没有高性能的 LRU cache 的实现

1162 次点击
所在节点    问与答
2 条回复
Arnie97
2018-11-14 01:13:33 +08:00
Python 3 标准库有 functools.lru_cache,不过没有 timeout
Buffer2Disk
2018-11-14 10:22:09 +08:00
@Arnie97 是的,有点蛋疼,网上找了一个第三方的 OrderedDict 实现,https://pypi.org/project/ruamel.ordereddict/

号称是速度很快,但是换上以后 cpu 飙升。。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/507331

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX