如何清除或删除julia中的全局?

问题描述 投票:20回答:6

是否有任何语法与MATLAB的“清除”类似,即如果我有一个全局变量“a”。我怎么摆脱它?我怎么做模拟

clear a
global-variables global julia
6个回答
11
投票

从0.3.9开始,可以通过workspace()函数清除所有全局变量(获取新工作空间)。

也可以使用LastMain(例如LastMain.foobar)从最后一个工作区获取变量。

所以目前唯一能做到你想做的事情的方法就是清除所有东西,然后将你想要的变量转移到你的新工作区。


9
投票

在这里查看这个问题的最新答案:http://docs.julialang.org/en/latest/manual/faq/#how-do-i-delete-an-object-in-memory

取自文档:

Julia没有模拟MATLAB的清晰功能;一旦在Julia会话中定义了名称(技术上,在模块Main中),它始终存在。

如果您关注内存使用情况,则始终可以使用内存较少的对象替换对象。例如,如果A是您不再需要的千兆字节大小的数组,则可以释放A = 0的内存。内存将在下次运行垃圾收集器时释放;你可以用gc()来强制这种情况发生。


7
投票

在朱莉娅0.6(不确定旧版本支持与否)。你可以通过调用clear!()来删除变量并释放它的内存。

你得打电话清楚!在变量的符号名称上:

julia> x = 5
5

julia> sizeof(x)
8

julia> clear!(:x)

julia> sizeof(x)
0

正如DFN指出的那样,这实际上不会删除对象,而是将它们设置为nothing。这对于释放工作空间中的内存非常有用,因为您可以“删除”非常量对象的内存占用。


6
投票

目前,一个没有。但是,跟踪该功能存在一个问题:

https://github.com/JuliaLang/julia/issues/2385


3
投票

对于Julia-0.6.4,

clear!(:x)

正如@niczky提到的那样,它正在iJulia工作。

但是,对于Julia-1.0.0,

clear!(:x)

...抛出以下内容:

ERROR: UndefVarError: clear! not defined
Stacktrace:
 [1] top-level scope at none:0

所以,Julia-1.0.0已经破了。


1
投票

绝对清楚!(:x)不适用于笔记本(IJulia)中的julia 0.6.0!您可以选择使用x = 0作为替代。

© www.soinside.com 2019 - 2024. All rights reserved.