最近我在写一个 pyqt 的程序,里面需要调用外部的一个 mpi 程序进行计算。我看网上都用 Qprocess 起外部程序,我试了一下,确实可以直接跑外部的 mpi 程序,但当我想中途 kill 这个 mpi 程序的时候,发现了一个问题,就是 Qprocess 自己虽然被杀死了,但由它起的 mpi 进程仍在后台跑。各位大佬知道如何完全 kill 由 Qprocess 起的 mpi 程序吗?
附上我的 pyqt 代码片段:
process = QProcess() process.setWorkingDirectory(f"{workDir}") command = f"mpiexec -n {mpiNum} {SG_INTEXE}" process.start(command) while True: if self.stopOneFlag: process.kill() process.waitForFinished(-1) process = None self.logChange.emit(f"{name}stop !\n") logging.info(f"{name}stop !") break 