Ручная сборка "мусора" в Python

Охота на Wumpus была бы фантастической. Это относительно простая игра, но большинство примеров - это старый процедурный код на бейсике. Вы можете начать с нуля и написать OO-версию на C ++.

Игра жизни Конвея - еще одна хорошая игра, так как она не требует взаимодействия с пользователем. Я написал 3D-версию в начале своей карьеры и нашел ее полезной. И очень интересно наблюдать: -)

< в сторону >
Я действительно скучаю по старым временам, когда в компьютерных журналах были списки программ на заднем плане, которые вы могли напечатать самостоятельно. У них были игры, утилиты, что угодно. Я так много узнал, просто копируя то, что написали другие.
& Л; / & в стороне триазола

17
задан user443854 18 October 2013 в 17:38
поделиться

4 ответа

Согласно документы , gc.get_referrers (thatobject) сообщит вам , почему объект все еще жив (сделайте это сразу после gc.collect () , чтобы убедиться, что нежелательная «живость» будет постоянной). После этого это как-то черное искусство ;-). Вы'

24
ответ дан 30 November 2019 в 12:13
поделиться

del Или None только ваши друзья

>>> a = "Hello"
>>> a = None
Or
>>> del a
4
ответ дан 30 November 2019 в 12:13
поделиться

Это зависит от того, на чем работает ваш Python. Вот хорошая статья , объясняющая подробности

Цитата:

В текущих выпусках CPython каждое новое присвоение x внутри цикла освобождает ранее выделенный ресурс. При использовании GC это не гарантируется. Если вы хотите написать код, который будет работать с любой реализацией Python, вы должны явно закрыть ресурс; это будет работать независимо от GC:

for name in big_list:
    x = Resource()
    do something with x
    x.close()
1
ответ дан 30 November 2019 в 12:13
поделиться

Если GC отказывается уничтожить его, это потому, что у вас где-то есть ссылка на него. Избавьтесь от ссылки, и она (в конце концов) уйдет. Например:

myRef = None

Имейте в виду, что сборщик мусора не может обязательно уничтожить ваш объект, если это не потребуется.

Если ваш объект удерживает ресурсы, не находящиеся под управлением Python (например, некоторые уловки с C код, вызываемый из Python), объект должен предоставлять вызов освобождения ресурсов, чтобы вы могли сделать это, когда захотите, а не тогда, когда Python решит.

4
ответ дан 30 November 2019 в 12:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: