当 MATLAB 真的很忙时,如何中断它?

Posted

技术标签:

【中文标题】当 MATLAB 真的很忙时,如何中断它?【英文标题】:How can I interrupt MATLAB when it gets really really busy? 【发布时间】:2011-01-25 03:39:26 【问题描述】:

我正在MATLAB 中运行一个长时间的模拟,我意识到我需要停止并重新运行。但是,MATLAB 确实参与了这个计算,并且它停止了响应。如何在不杀死 MATLAB 的情况下中断此运行?

(我意识到这是许多 Windows 程序的问题,但在 MATLAB 中确实很严重。)

【问题讨论】:

复制:***.com/questions/1500314/… 【参考方案1】:

转到命令窗口,并多次按 Ctrl-C。根据我的经验,在单核机器上你没有机会,除非你做很多输出。在多核或多处理器机器上,您可能最终会停止它,但这需要时间。

另见http://www.mathworks.com/support/solutions/en/data/1-188VX/index.html

已添加:最好的做法是 (1) 在运行任何非常长的操作之前保存工作区的快照,以及 (2) 在非常长的计算中,将一些变量写入文件不时地,以便您可以在计算被中断(例如电源故障)时恢复计算。

【讨论】:

我同意,但有时我会用 Windows 任务管理器杀死它,而不是像发疯的猴子一样使用 bashc Ctrl-C。 +1:像疯子一样按 CTRL-C 通常是可行的,但在某些情况下,关闭一切就可以了。至少可以说有点烦人......【参考方案2】:

MATLAB 对 CTRL-C 的响应程度取决于它在做什么。例如,如果它处于 BLAS 或 LAPACK 调用的中间,则在该调用返回之前它不会响应。如果您在执行大量 MATLAB 行的代码块中,您可以期望 CTRL-C 响应更快。

【讨论】:

【参考方案3】:

我有一个非常简单的技巧来暂停(或停止)无响应的执行。 如果我的模拟运行很长的循环,我总是执行以下操作:

for ii = 1:N
   do_stuff();
   clear empty_script;
   empty_script;
end

然后创建一个文件empty_script.m,其中包含以下内容:

%keyboard

每当我想暂停执行时,我都会打开一个外部文本编辑器并取消注释 empty_script.m 中的 keyboard 行。这让我处于调试模式,我可以在其中查看变量、修改内容甚至停止程序。

【讨论】:

【参考方案4】:

解决这个问题的另一种策略是在计算中的某处引入一个非常短的暂停(尤其是在 FOR 或 WHILE 循环中),如下所示:

for ii = 1:N
do_stuff();
pause(0.1);
end

这增加了你的疯狂 Ctrl-C'ing 实际上阻止它的机会。

【讨论】:

【参考方案5】:

你可以在windows任务管理器中找到MATLAB进程,将优先级设置为高或低,让其他程序具有更低或更高的优先级。根据我的经验,这是一种有效的方法。

【讨论】:

【参考方案6】:

如果你不停止并重新运行,那么杀戮是不错的选择 转到 windows 任务管理器-> 进程然后罚款 MATLAB.exe 并按下结束进程按钮

【讨论】:

OP 说“没有杀死 MATLAB”。 >>'我意识到我需要停止并重新运行' 停止和重新运行 不一样 与杀死 MATLAB。 OP 可能希望保留在运行脚本之前创建的工作区中的一些变量。杀死 MATLAB 将失去一切,包括那些变量。 -1.

以上是关于当 MATLAB 真的很忙时,如何中断它?的主要内容,如果未能解决你的问题,请参考以下文章

当工作忙时咋办,同一个时间干同一个事

Matlab - AppDesigner:使用GUI中断循环

如何中断被某些套接字 IO 操作阻塞的线程而不关闭它

非阻塞系统调用可以中断吗?

c的signal函数

vis studio 2008中的c ++调试,当变量变为零时如何中断