我正在调试 Django 应用程序中的内存泄漏,django_cachepurge 中可能有一些奇怪的东西:
from threading import currentThread
_urls_to_purge = {}
def add_purge_url(url):
# ....
_urls_to_purge.setdefault(currentThread(), set()).add(url)
这样的构造容易发生内存泄漏吗? 我怀疑是这样,除非我不熟悉这里的一些 Python 魔法。 没有清理 dict 的位置。
请您参考如下方法:
我不知道 currentThread 返回什么,但您可能可以使用内置的 id 或 hash 函数来获取一个安全值。
如果查找不够,例如因为您想遍历容器,所以有 weakref.WeakKeyDictionary。
