微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何杀死 Qt QProcess 运行的 MATLAB 批处理?

如何解决如何杀死 Qt QProcess 运行的 MATLAB 批处理?

我目前有一个 Python 程序,它以批处理方式调用 MATLAB 脚本,如下所示:

matlab = QProcess()
matlab.start('matlab -nofigureWindows -batch "cd(users/script_directory/); MyScript.m;"')
#^ command to start MATLAB batch process in CMD

我遇到的问题是,一旦此批处理开始,就无法终止它。因此,如果我的 Python 应用程序被强制关闭,MATLAB 脚本会继续运行并导致各种问题,这意味着我需要在应用程序关闭时终止该进程。

我将 MATLAB 脚本作为 QProcess 调用,并在 MATLAB 脚本完成执行之前强制关闭 Python 应用程序时收到以下消息:

QProcess: Destroyed while process ("matlab") is still running.

有了这个,我该如何停止批处理 MATLAB 进程?在 CMD 中使用 'ctrl-c' 有时对我有用,可以终止进程,但我需要它保持一致才能使 Python 正常工作。

同样,我可以让它“强制退出”或“重新启动”批处理 MATLAB 或任何类似的东西来清除所有正在运行的进程吗?

解决方法

一种蛮力杀死它的方法是在应用程序开始时通过 process and system utilities library 杀死任何 matlab 进程:

import psutil

for process in psutil.process_iter():
    if process.name().lower() == 'matlab.exe':
        process.terminate()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。