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

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

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

【问题讨论】:

标签: matlab windows-xp


【解决方案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.
          猜你喜欢
          • 2014-08-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-12-10
          • 2023-03-22
          • 1970-01-01
          相关资源
          最近更新 更多