【问题标题】:How to kill a MATLAB Batch Process ran by Qt QProcess?如何杀死由 Qt QProcess 运行的 MATLAB 批处理?
【发布时间】:2024-05-05 02:00:01
【问题描述】:

我目前有一个 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 或类似的任何东西来清除所有正在运行的进程吗?

【问题讨论】:

  • 如果从命令行启动,通常如何终止显示的 matlab 批处理命令?

标签: python matlab qt pyqt qprocess


【解决方案1】:

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

import psutil

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

【讨论】:

    最近更新 更多