首页 > 解决方案 > Python 多处理。检查进程是否正在运行

问题描述

如果十秒钟后发生这种情况,我如何打印“进程超时并终止”?

如果没有终止,我如何打印“进程成功完成”?

import multiprocessing
import time

def hello():
    #process to be terminated after ten seconds

if __name__ == '__main__':
    proc = multiprocessing.Process(target=hello)
    proc.start()
    time.sleep(10)
    proc.terminate()

标签: pythonpython-multiprocessing

解决方案


与其休眠,不如通过超时“加入”进程。如果该过程在 10 秒内退出,您将立即收到通知。否则,10 秒后您可以检查退出代码。我在此示例中添加了第三种非零退出代码的情况,以解决一般故障。

import multiprocessing
import time

def hello():
    #process to be terminated after ten seconds

if __name__ == '__main__':
    proc = multiprocessing.Process(target=hello)
    proc.start()
    proc.join(10)
    if proc.exitcode is None:
        proc.terminate()
        proc.join(1)
        if proc.exitcode is None:
            proc.kill()
        print("process timed out and terminated")
    elif proc.exitcode == 0:
        print("process completed successfully")
    else:
        print("unexpected error") 

在父母决定一切都出错后,有一个窗口可以让孩子正确退出。如果这是一个问题,你可以做一些更复杂的事情。


推荐阅读