Как очистить или удалить глобальное в julia?
Есть ли какой-либо синтаксис, который делает что-то похожее на MATLAB "clear", т.е. если у меня есть глобальная переменная "a". Как я могу избавиться от него? Как сделать аналог
clear a
Ответы
Ответ 1
Начиная с версии 0.3.9, можно очистить все глобальные переменные (получить новое рабочее пространство) через функцию workspace().
Также можно получить переменные из последнего рабочего пространства, используя LastMain (например, LastMain.foobar).
Таким образом, в настоящее время единственный способ сделать то, что вы хотите, - это очистить все и передать все, кроме переменной, которую вы хотите создать в новом рабочем пространстве.
Ответ 2
См. последний ответ на этот вопрос здесь: http://docs.julialang.org/en/latest/manual/faq/#how-do-i-delete-an-object-in-memory
Получено из документов:
У Джулии нет аналога функции MATLABs clear; после названия определяется в сеансе Julia (технически, в модуле Main), это всегда присутствует.
Если использование памяти является вашей проблемой, вы всегда можете заменить объекты на которые потребляют меньше памяти. Например, если A - размер гигабайта массив, который вам больше не нужен, вы можете освободить память с помощью A = 0. память будет выпущена при следующем запуске сборщика мусора; вы может заставить это случиться с gc().
Ответ 3
В настоящее время этого нет. Однако для отслеживания этой функции существует проблема:
https://github.com/JuliaLang/julia/issues/2385
Ответ 4
В Julia 0.6 (не уверен, поддерживает ли эта версия более старая версия или нет). Вы можете удалить переменную и освободить ее память, вызвав clear!()
.
Вам нужно позвонить ясно! на символическом имени переменной:
julia> x = 5
5
julia> sizeof(x)
8
julia> clear!(:x)
julia> sizeof(x)
0
Как указывал DFN, это фактически не удаляет объекты, а устанавливает их на nothing
. Это полезно для освобождения памяти из рабочей области, поскольку вы можете "удалить" объем памяти для непостоянных объектов.
Ответ 5
Абсолютно ясно! (: x) не работает с julia 0.6.0 в блокноте (IJulia)! Вы можете использовать x = 0 в качестве альтернативы.