【问题标题】:How to pause Matlab executable and resume it from Terminal如何暂停 Matlab 可执行文件并从终端恢复它
【发布时间】:2015-11-11 12:28:52
【问题描述】:

我正在用 Servoy 编写一个应用程序,它调用一个 Matlab 可执行文件来执行一些复杂的数学运算并将结果返回到数据库。

问题是 Matlab 可执行文件非常慢,尤其是在启动时。

我想在执行第一个操作时启动可执行文件,然后在后台暂停它并在需要时再次调用它。 我可以从 Servoy 调用终端,但我不知道如何让 Matlab 暂停和恢复(如果可能的话)。

我期待任何建议。

【问题讨论】:

    标签: bash matlab


    【解决方案1】:

    理论上您可以使用现有的 bash 解决方案,使用 input 暂停 matlab 并输入任意键以继续,但我强烈建议不要这样做。

    有两种不错的方法,首先您可以构建一个库而不是可执行文件。 Matlab Builder JA 允许您将功能导出为 jar 文件。

    您还可以创建一个应用程序服务器(可执行文件),它允许通过 XMLRPC 或类似协议调用方法。在这里我不确定部署到可执行文件时可以使用哪些功能,可能是您必须选择 XMLRPC 的替代方法。

    这两种可能性都允许您将任务拆分为单独的步骤,并在您想继续时一一调用。

    【讨论】:

    • 我尝试了您的第一个建议,但是当我尝试导出文件时出现错误:“只有具有单个入口点的 matlab 函数和 MEX 文件是可接受的文件。我对 Matlab 的了解很少。我要做的是导出一个 .m 文件。
    • 很遗憾,我无法为您提供详细的帮助,因为我无法再使用部署工具。
    【解决方案2】:

    您可以向进程发送信号以完成此操作:

    kill -STOP $PID
    

    当 SIGSTOP 被发送到一个进程时,通常的行为是将该进程暂停在其当前状态。该进程只有在收到 SIGCONT 信号时才会恢复执行。 SIGSTOP 和 SIGCONT 用于 Unix shell 中的作业控制,以及其他用途。 SIGSTOP 不能被捕获或忽略。

    继续:

    kill -CONT $PID
    

    当向进程发送 SIGSTOP 或 SIGTSTP 时,通常的行为是将该进程暂停在其当前状态。该进程只有在收到 SIGCONT 信号时才会恢复执行。 SIGSTOP 和 SIGCONT 用于 Unix shell 中的作业控制,以及其他用途。

    更多信息here

    【讨论】:

      猜你喜欢
      • 2015-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-12
      • 1970-01-01
      相关资源
      最近更新 更多