【问题标题】:Should I kill Matlab when it is unresponsive?当 Matlab 无响应时,我应该杀死它吗?
【发布时间】:2014-06-12 04:06:24
【问题描述】:

几天前我启动了一个 Matlab 脚本。通常需要 5 天才能完成。问题是:我在任务栏中最小化了Matlab命令窗口,现在我无法恢复它了。无论我单击 Matlab 窗口多少次,它都不会出现在屏幕上。由于我的脚本中的密集计算,Matlab 变得没有响应。
Windows 中的其他程序仍然可以正常工作。

由于我看不到命令​​窗口,我不知道我的脚本的进度。如果我知道 Matlab 直到运行我的脚本并且有一天会完成,那很好。但我从一些消息来源(例如Fangjun Jiang's answer in a forum,除了在我的情况下它几天都没有响应,而且我的代码只包含密集计算)听说,Matlab 在实际进行密集计算之前试图摆脱冻结状态。

通过 Windows 任务管理器,我可以看到 Matlab 正在使用内存(Matlab 使用的内存值随时间变化)。这就是我所能看到的。

现在我的问题是:如果它的 GUI(命令窗口、编辑器)没有响应,Matlab 是否仍然进行计算?我已经运行它很多天了,如果我在不知道它仍在工作的情况下杀死它会很痛苦>_

【问题讨论】:

    标签: windows matlab


    【解决方案1】:

    在外部,无法区分耗时较长的脚本或陷入无限循环的脚本。在这一点上,我无法给出有用的建议,但是一些建议可以避免将来发生这种情况:

    • 启用日记。确保将任何错误打印到控制台。这样,您至少可以大致了解卡在哪里。
    • 我会尝试将其分成多个作业,这些作业从前一个获取输入(matfile)并生成一个新的 matfile。这样,如果 matlab 崩溃,丢失的数据就会更少。除了 matlab 有时会出现内存泄漏之外,为每个作业启动新的 matlab 可能会解决此问题。

    【讨论】:

    • 除了将错误记录到文件之外,我还建议您以合理的时间间隔记录您的计算进度。这可以像打印带有时间戳的循环计数器一样简单。这样就可以看看有没有卡住了。
    • 干杯@Daniel,下次我会尝试日记。但我可以确认我的代码中没有无限循环。它只需要处理大量数据。对于你的多份工作的想法,我已经做到了。这个脚本是我的大程序的一个子脚本。它似乎停留在第一个密集命令 svmtrain 上。但是你关于开始一个新的 matlab 的建议很有趣。下次我一定会试试的
    • 当我进行长时间运行的计算时,我喜欢先运行一个小样本,然后使用大 O 复杂度来推测时间。这也有助于避免那些需要很长时间的计算。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-02
    相关资源
    最近更新 更多