1

有没有办法以编程方式检查前端是否认为评估仍在运行?甚至更好:有没有办法检查前端是否有一些待处理的输入要发送到内核?

PS这个问题来自上一个问题

编辑

在前端评估单元时,我们通常为内核创建一个输入队列。

我需要一个函数,True如果 FrontEnd 已将来自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}]

现在,等待六秒或更长时间,然后选择“中断评估”。然后,您可以检查状态i以查看它的距离。您可以使用“调试器控件”下的继续来恢复评估。

于 2011-04-13T03:40:54.837 回答