V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
SJ2050cn
V2EX  ›  Qt

Qt 里的 Qprocess 怎么完全 kill 一个 mpi 程序

  •  
  •   SJ2050cn ·
    SJ2050SJ · Feb 26, 2023 · 24311 views
    This topic created in 1155 days ago, the information mentioned may be changed or developed.

    最近我在写一个 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
    
    3 replies    2023-02-26 17:09:20 +08:00
    SJ2050cn
        1
    SJ2050cn  
    OP
       Feb 26, 2023
    上面是我直接截取我程序中的片段,涉及到一些具体的事务逻辑。这里我再提供一个最简化的复现片段:
    ```python
    process = QProcess()
    command = f"mpiexec -n 8 my_mpi_program"
    process.start(command)
    process.kill()
    process.waitForFinished(-1)
    process = None
    ```
    zzzain46
        2
    zzzain46  
       Feb 26, 2023 via iPhone
    顶一下,最近也遇到过这个问题。问了 chatgpt 也不会…
    thedrwu
        3
    thedrwu  
       Feb 26, 2023 via Android
    找找 qprocess 文档里有没有 kill pgid
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5982 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 63ms · UTC 03:31 · PVG 11:31 · LAX 20:31 · JFK 23:31
    ♥ Do have faith in what you're doing.