1

FrontEnd が評価がまだ実行中であると見なすかどうかをプログラムで確認する方法はありますか? またはさらに良い: フロントエンドにカーネルに送信される保留中の入力があるかどうかを確認する方法はありますか?

PS この質問は前の質問から生じました。

編集

フロントエンドでセルを評価するとき、通常、カーネルの入力のキューを作成します。

Trueフロントエンドが からの入力キューの最後の入力をカーネルに送信した場合に返す関数が必要EvaluationNotebook[]です。言い換えれTrueば、この現在の入力がフロントエンドによって生成された入力のキューの最後の入力であるかどうかを返す関数が必要です。

4

2 に答える 2

2

これはうまくいくはずです。もちろん、チェックしたい評価を実行しているカーネルとは別のカーネルで実行する必要があります。

NotebookEvaluatingQ[nb_] := (
 SelectionMove[nb, All, Notebook];
 Or @@ Map["Evaluating" /. # &, Developer`CellInformation[nb]]
)
于 2011-04-15T04:55:12.160 に答える
0

明らかに、 のようなツールを使用して事前に設定しておくことをお勧めしますMonitor。例えば、

Monitor[
  Do[Pause[6], {i, 10}],
i]

インデックス変数の進行状況を観察できますi。事前に設定していない場合は、評価メニューの下にある [評価を中断] ボタンを使用して何かを実行できる場合があります。たとえば、次のことを試してください。

Do[Pause[6], {i, 10}]

ここで、6 秒以上待ってから、[評価の中断] を選択します。次に、 の状態を調べて、iそれがどれだけ進んでいるかを確認できます。[Debugger Controls] の [Continue] を使用して評価を再開します。

于 2011-04-13T03:40:54.837 に答える