2016-11-11 5 views
1

スクリプトで実行される変数のスコープが「ワークスペース」に保持されるMatlabでコードを書きました。私が取り組んでいるデータは非常に大きいので、スクリプトを実行するたびに必要な結果を出すには20〜30分かかります。 Matlabの利点は、実行後、スクリプトの最後にコードを追加したい場合は、コードを最初から再実行する必要がなく結果変数に実行できることです。スクリプト実行後の名前空間と変数値の保持

Pythonで、スクリプトの実行から次の実行まで変数の値が保持される類似の方法はありますか?

+2

https://ipython.org/notebook.html –

+0

私があなたが意味すると思うものをよりよく理解するために、あなたの質問とタイトルを改めました。私が何かを誤解してしまった場合は、気をつけてください。 – skrrgwasme

答えて

0

私はあなたを正しく理解しています。

私は最良の選択は、ファイルにスクリプトを書かずに直接実行して、Pythonシェルを使用していると思います。

2の選択は、酸洗又はオブジェクトのシリアル化されている:

「酸洗い」は、Pythonオブジェクト階層が バイトストリームに変換、および逆 操作、それによりバイトである「unpickle化」されるプロセスでありますストリームはオブジェクト の階層に戻されます。

"Python object serialization"

+0

これは可能ですが、計算が20〜30分かかるほど複雑であれば、実用的ではないと思います。 – skrrgwasme

+0

私は、タイミングを実行するのではなく、コードの形式と視覚化に依存していると思います。 – anati

1

あなたは、このようなshelvejsonモジュールと同様に、実行の終了時に、ディスク上のいくつかの永続ストレージに変数を書き出すことができます。次に、永続ストレージから変数を読み込み、ワークスペースを復元しようとするスクリプトの先頭にロジックを追加し、ロードが失敗した場合に計算を再実行します。

1

あなたは本当に対話的なPythonシェルを実行します。これは実際にMATLABでやっていることです。すべてのスクリプトが同じMATLABシェル内で実行されています。そのため、シェルはシェルを保持しているため、変数は実行の間中存続します。

pythonとの違いは、スクリプトを実行するにはPythonシェルまたはスタンドアロンの2つの方法があることです。 Pythonでスタンドアロンで実行していますが、これはMATLABのオプションではありません。

MATLABでできることにできるだけ近づけたい場合は、関数内のスクリプトにコードをラップし、Pythonシェルを起動して関数を実行してください。

しかし、これは通常、あなたがやっているように長時間実行される繰り返しコードには最適ではありません。もっと良い方法は、IPython/Jupyterノートブックを使うことです。このインターフェイスを使用すると、コードの一部を選択的に実行したり、パーツを再構成したり、他の多くの便利な機能を使用することができます。また、セッション間で特定の変数を自動的に保持する機能もあります。

関連する問題