web-dev-qa-db-ja.com

Juliaでグローバルをクリアまたは削除するにはどうすればよいですか?

MATLABの「クリア」に似た構文、つまりグローバル変数「a」がある構文はありますか?どうすればそれを取り除くことができますか?どのように私はのアナログを行うのですか

clear a
24
Mateo

0.3.9以降、workspace()関数を使用して、すべてのグローバル変数をクリア(新しいワークスペースを取得)することが可能です。

LastMain(LastMain.foobarなど)を使用して、最後のワークスペースから変数を取得することもできます。

したがって、現在あなたが望むことを行う唯一の方法は、すべてをクリアして、変数以外のすべてを新しいワークスペースに転送することです。

11

この質問の最新の回答はこちら: http://docs.julialang.org/en/latest/manual/faq/#how-do-i-delete-an-object-in-memory

ドキュメントから取得:

Juliaには、MATLABのclear関数に類似するものはありません。名前がJuliaセッションで(技術的には、モジュールMainで)定義されると、常に存在します。

メモリ使用量が気になる場合は、いつでもオブジェクトをより少ないメモリを消費するオブジェクトに置き換えることができます。たとえば、Aが不要になったギガバイトサイズの配列である場合、A = 0でメモリを解放できます。メモリは、次のガベージコレクターの実行時に解放されます。これをgc()で強制的に実行できます。

10
tholy

Julia 0.6では(古いバージョンがこれをサポートしているかどうかは不明)。 clear!()を呼び出すと、変数を削除してメモリを解放できます。

あなたは明確に電話する必要があります!変数の記号名:

Julia> x = 5
5

Julia> sizeof(x)
8

Julia> clear!(:x)

Julia> sizeof(x)
0

DFNが指摘したように、これは実際にオブジェクトを削除するのではなく、nothingに設定します。これは、非定数オブジェクトのメモリフットプリントを「削除」できるため、ワークスペースからメモリを解放するのに役立ちます。

7
niczky12

現在、そうではありません。ただし、その機能を追跡するには問題があります。

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

6
StefanKarpinski

Julia-0.6.4の場合、

clear!(:x)

@niczkyで述べられているように動作しており、iJuliaでも動作しています。

ただし、Julia-1.0.の場合、

clear!(:x)

...以下をスローします:

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

したがって、Julia-1.0.0では壊れています。

5
Long short

絶対にclear!(:x)は、ノートブック(IJulia)のJulia 0.6.0では機能しません!代わりにx =を使用することもできます。

1
spg