线程/进程安全超时功能调用

时间:2019-11-28 18:33:58

标签: python python-3.x multiprocessing timeout thread-safety

我正在围绕主程序调用编写诊断包装。该程序依赖于多处理和线程。我想在主程序调用周围放置一个超时包装程序,以便可以记录超时事件,但是对于函数超时方法Timeout on a function call而言,当前答案不是一个明确的答案,如果它们是线程安全的。我目前认为最安全的方法是基于多进程答案,但是使用psutil来清理所有子进程

if __name__ == '__main__':
    # Start bar as a process
    p = multiprocessing.Process(target=main)
    p.start()
    # Wait for 10 seconds or until process finishes
    p.join(10)
    p_main = psutil.Process()
    for child in p_main.children(recursive=True):
        child.terminate()

或根据https://psutil.readthedocs.io/en/latest/#kill-process-tree

处的reap_children方法进一步扩展此功能。

0 个答案:

没有答案