В Python может ли dict с currentThread () в качестве ключа вызвать утечки памяти? - PullRequest
2 голосов
/ 26 октября 2011

Я отлаживаю утечки памяти в приложении 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.

1 Ответ

1 голос
/ 26 октября 2011

Я не знаю, что возвращает currentThread, но вы, вероятно, можете использовать встроенные функции id или hash для получения безопасного значения.

Если поиска недостаточно, например, потому что вы хотите перебрать контейнер, есть weakref.WeakKeyDictionary.

...