global variables - ¿Cómo se borra o elimina un global en julia?
global-variables julia-lang (6)
¡Absolutamente claro! (: X) no funciona con julia 0.6.0 en el cuaderno (IJulia)! Puede elegir usar x = 0 como alternativa.
¿Hay alguna sintaxis que haga algo similar a "clear" de MATLAB, es decir, si tengo una variable global "a"? ¿Como me deshago de esto? ¿Cómo hago el análogo de
clear a
A partir de 0.3.9, es posible borrar todas las variables globales (obtener un nuevo espacio de trabajo), a través de la función de espacio de trabajo ().
También es posible obtener las variables del último espacio de trabajo utilizando LastMain (por ejemplo, LastMain.foobar).
Por lo tanto, actualmente la única forma de hacer lo que desea es despejar todo y transferir todo menos la variable que desea a su nuevo espacio de trabajo.
Actualmente, uno no lo hace. Sin embargo, hay un problema para rastrear esa característica:
En Julia 0.6 (no estoy seguro si la versión anterior soporta esto o no). Puedes eliminar la variable y liberar su memoria llamando a clear!()
.
Tienes que llamar claro! En el nombre simbólico de la variable:
julia> x = 5
5
julia> sizeof(x)
8
julia> clear!(:x)
julia> sizeof(x)
0
Como señaló DFN, esto no eliminará realmente los objetos, sino que los establecerá en nothing
. Esto es útil para liberar memoria de su área de trabajo, ya que puede "eliminar" la huella de memoria para objetos no constantes.
Para Julia-0.6.4 ,
clear!(:x)
está trabajando como lo menciona @niczky Y está trabajando en iJulia.
Sin embargo, para Julia-1.0.0 ,
clear!(:x)
... arroja lo siguiente:
ERROR: UndefVarError: clear! not defined
Stacktrace:
[1] top-level scope at none:0
Por lo tanto, está roto para Julia-1.0.0.
Vea la respuesta más reciente a esta pregunta aquí: http://docs.julialang.org/en/latest/manual/faq/#how-do-i-delete-an-object-in-memory
Recuperado de los documentos:
Julia no tiene un análogo de la función clara de MATLAB; Una vez que se define un nombre en una sesión de Julia (técnicamente, en el módulo Principal), siempre está presente.
Si le preocupa el uso de la memoria, siempre puede reemplazar los objetos por otros que consuman menos memoria. Por ejemplo, si A es una matriz de un gigabyte que ya no necesita, puede liberar la memoria con A = 0. La memoria se liberará la próxima vez que se ejecute el recolector de basura; puedes forzar que esto suceda con gc ().