最近我在写一个 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
1
SJ2050cn OP 上面是我直接截取我程序中的片段,涉及到一些具体的事务逻辑。这里我再提供一个最简化的复现片段:
```python process = QProcess() command = f"mpiexec -n 8 my_mpi_program" process.start(command) process.kill() process.waitForFinished(-1) process = None ``` |
2
zzzain46 2023-02-26 12:12:41 +08:00 via iPhone
顶一下,最近也遇到过这个问题。问了 chatgpt 也不会…
|
3
thedrwu 2023-02-26 17:09:20 +08:00 via Android
找找 qprocess 文档里有没有 kill pgid
|