[〜#〜] matlab [〜#〜] で長いシミュレーションを実行していますが、停止して再実行する必要があることに気付きました。ただし、MATLABは実際にこの計算に関与しており、応答を停止しています。 MATLABを終了せずにこの実行を中断するにはどうすればよいですか?
(これは多くのWindowsプログラムの問題であることがわかりますが、MATLABでは非常に深刻です。)
コマンドウィンドウに移動し、Ctrl-Cを何度か押します。私の経験から、シングルコアマシンでは、大量の出力を行わない限り、チャンスはありません。マルチコアまたはマルチプロセッサマシンでは、おそらく最終的に停止しますが、時間がかかります。
こちらもご覧ください http://www.mathworks.com/support/solutions/en/data/1-188VX/index.html
追加:(1)本当に長いものを実行する前にワークスペースのスナップショットを保存し、(2)非常に長い計算内で、停電が原因で計算が中断された場合に計算を再開できるように、変数の一部をファイルに時々書き込むことができます。
MATLABがCTRL-Cにどれだけうまく応答するかは、何をしているのかに依存します。たとえば、BLASまたはLAPACK呼び出しの途中にある場合、その呼び出しが戻るまで応答しません。 MATLABの多くの行が実行されているコードブロックにいる場合、CTRL-Cの応答性が向上することが期待できます。
応答しない実行を一時停止(または停止)する非常に簡単なトリックがあります。シミュレーションで長いループが実行されている場合、私は常に次のことを行います。
for ii = 1:N
do_stuff();
clear empty_script;
empty_script;
end
次に、以下を含むファイルempty_script.m
を作成します。
%keyboard
実行を一時停止するには、外部テキストエディターを開き、empty_script.m
のkeyboard
という行のコメントを解除します。これにより、変数を監視したり、内容を変更したり、プログラムを停止したりできるデバッグモードになります。
この問題に対処する別の戦略は、次のように、計算のどこか(特にFORまたはWHILEループ)で非常に短い休止を導入することです。
for ii = 1:N
do_stuff();
pause(0.1);
end
これにより、熱狂的なCtrl-Cが実際に停止する可能性が高くなります。
windowsタスクマネージャーでMATLABプロセスを見つけて、優先度を高または低に設定し、他のプログラムに低または高の優先度を持たせることができます。私の経験では、それは効率的な方法です。