【发布时间】:2014-05-04 00:50:43
【问题描述】:
是否有任何类似于 MATLAB 的“清除”的语法,即如果我有一个全局变量“a”。我该如何摆脱它?我该怎么做
的类比clear a
【问题讨论】:
标签: global-variables global julia
是否有任何类似于 MATLAB 的“清除”的语法,即如果我有一个全局变量“a”。我该如何摆脱它?我该怎么做
的类比clear a
【问题讨论】:
标签: global-variables global julia
在此处查看此问题的最新答案:https://docs.julialang.org/en/v1/manual/faq/#How-do-I-delete-an-object-in-memory%3F
从文档中检索:
Julia 没有类似 MATLAB 的 clear 函数;曾经的名字 在 Julia 会话中定义(技术上,在模块 Main 中),它是 永远存在。
如果您关心内存使用情况,您可以随时将对象替换为 那些消耗更少内存的。例如,如果 A 是千兆字节大小的 您不再需要的数组,您可以使用 A = 0 释放内存。 下次垃圾收集器运行时,内存将被释放;你 可以通过 gc() 强制执行此操作。
【讨论】:
在 Julia 0.6 中。您可以通过调用clear!() 来删除该变量并释放它的内存。
你必须打电话清除!关于变量的符号名:
julia> x = 5
5
julia> sizeof(x)
8
julia> clear!(:x)
julia> sizeof(x)
0
正如 DFN 指出的那样,这实际上不会删除对象,而是将它们设置为 nothing。这对于从工作区释放内存很有用,因为您可以“删除”非常量对象的内存占用。
这在 Julia 1.0+ 中不起作用。如果您使用的是 1.0+,则必须将对象设置为 Nothing 并让垃圾收集器从那里获取它。
这是来自官方文档here。
【讨论】:
nothing。例如,你不能做julia> const x = 3,因为那样你会得到ERROR: cannot declare x constant; it already has a value。
ERROR: UndefVarError: clear! not defined
对于 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,它已经坏了。
【讨论】:
绝对 clear!(:x) 不能在 notebook(IJulia) 中使用 julia 0.6.0!您可以选择使用 x = 0 作为替代。
【讨论】:
从 0.3.9 开始,可以通过 workspace() 函数清除所有全局变量(获取新工作区)。
也可以使用 LastMain(例如 LastMain.foobar)从最后一个工作区获取变量。
因此,目前做您想做的事情的唯一方法是清除所有内容并将除您想要的变量之外的所有内容转移到您的新工作区。
【讨论】:
目前,没有。但是,跟踪该功能存在一个问题:
【讨论】:
exit() 怎么样,有什么问题吗?谢谢。