Чат Python: удалить переменные для очистки памяти в функциях?

Графики жестки, потому что большинство нетривиальных проблем графика имеет тенденцию требовать, чтобы достойная сумма фактического кода реализовала, если больше, чем эскиз алгоритма требуются. Многое из него имеет тенденцию сводиться, знает ли кандидат кратчайший путь и алгоритмы обхода графика, знакомо с типами цикла и обнаружением, и знают ли они границы сложности. Я думаю, что много вопросов об этом материале сводится к мелочам больше, чем на месте способность к креативному мышлению.

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

мне нравится Euler проблема Проекта, которая просит находить самый дорогой путь вниз деревом (16/67); общий предок является пользой, нагреваются, но много людей видело его. Прося, чтобы кто-то разработал древовидный класс, выполните обходы, и затем фигурируйте, из которых обходов они могли восстановить дерево, также дает некоторое понимание реализация алгоритма и структура данных. Строгая-Brocot проблема программирования также интересна и быстра для разработки на плате ( http://online-judge.uva.es/p/v100/10077.html ).

11
задан Eli Courtwright 25 September 2009 в 15:34
поделиться

3 ответа

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

Таким образом, в большинстве случаев локальные переменные восстанавливаются в конце функции, потому что при выходе из функции объекты перестают ссылаться откуда угодно. Так что ваши операторы "del" совершенно не нужны, потому что Python все равно делает это.

16
ответ дан 3 December 2019 в 03:36
поделиться

Объекты Python никогда не удаляются явно. Единственный способ по-настоящему освободить память от объектов Python, на которые нет ссылок, - это использовать сборщик мусора. Ключевое слово del просто отвязывает имя от объекта, но объект по-прежнему необходимо очистить от мусора.

Если вы действительно думаете, что должны, вы можете принудительно запустить сборщик мусора с помощью модуля gc , но это почти наверняка преждевременная оптимизация, и вы, скорее всего, будете выполнять сборку мусора в неподходящее время. или иным образом неэффективно, если только вы действительно не знаете, что делаете.

Использование del , как указано выше, не имеет реального эффекта, поскольку эти имена были бы удалены по мере удаления в любом случае. Чтобы быть уверенным, вам потребуется выполнить явную сборку мусора (r).

7
ответ дан 3 December 2019 в 03:36
поделиться

Python использует сборку мусора. Это означает, что вам не нужно заботиться о памяти, поскольку она автоматически освобождается, когда больше не используется.

4
ответ дан 3 December 2019 в 03:36
поделиться
Другие вопросы по тегам:

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