我正在Servoy中编写一个应用程序,它调用Matlab可执行文件来执行一些复杂的数学运算并将结果转回数据库。
问题是Matlab可执行文件非常慢,尤其是在它们启动时。
我想在执行第一个操作时启动可执行文件,然后在后台暂停它并在需要时再次调用它。 我可以从Servoy执行终端调用,但我不知道如何使Matlab暂停和恢复(如果可能的话)。
我期待着任何建议。
答案 0 :(得分:2)
理论上你可以使用现有的bash解决方案,使用input
暂停matlab并输入任何键继续,但我强烈建议你不要这样做。
有两种不错的方法,首先你可以构建一个库而不是一个可执行文件。 Matlab Builder JA允许您将功能导出为jar文件。
此外,您可以创建一个应用程序服务器(可执行文件),它允许通过XMLRPC或类似协议调用方法。在这里,我不确定在部署到可执行文件时可用的功能,可能是您必须选择XMLRPC的替代方法。
这两种可能性都允许您将任务分成单独的步骤,在您想要继续进行的任何操作中逐一调用它们。
答案 1 :(得分:1)
您可以向流程发送信号,以实现此目的:
kill -STOP $PID
当SIGSTOP发送到进程时,通常的行为是暂停该进程的当前状态。只有在发送SIGCONT信号时,该过程才会恢复执行。 SIGSTOP和SIGCONT用于Unix shell中的作业控制,以及其他目的。 SIGSTOP无法被捕获或忽略。
要恢复:
kill -CONT $PID
当SIGSTOP或SIGTSTP发送到进程时,通常的行为是暂停该进程的当前状态。只有在发送SIGCONT信号时,该过程才会恢复执行。 SIGSTOP和SIGCONT用于Unix shell中的作业控制,以及其他目的。
更多信息here