您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

确保子进程在退出Python程序时失效

确保子进程在退出Python程序时失效

您可以为此使用 ,并注册程序退出时要运行的所有清理任务。

kargs]])**

在清理过程中,您还可以实现自己的等待,并在发生所需的超时时将其终止。

>>> import atexit
>>> import sys
>>> import time
>>> 
>>> 
>>>
>>> def cleanup():
...     timeout_sec = 5
...     for p in all_processes: # list of your processes
...         p_sec = 0
...         for second in range(timeout_sec):
...             if p.poll() == None:
...                 time.sleep(1)
...                 p_sec += 1
...         if p_sec >= timeout_sec:
...             p.kill() # supported from python 2.6
...     print 'cleaned up!'
...
>>>
>>> atexit.register(cleanup)
>>>
>>> sys.exit()
cleaned up!

-如果该进程(父进程)被杀死,则不会运行注册函数

这是一种杀死Windows中进程的方法。您的Popen对象具有pid属性,因此您可以通过 调用它(需要安装pywin32):

    def win_kill(pid):
        '''kill a process by specified PID in windows'''
        import win32api
        import win32con

        hProc = None
        try:
            hProc = win32api.OpenProcess(win32con.PROCESS_TERMINATE, 0, pid)
            win32api.TerminateProcess(hProc, 0)
        except Exception:
            return False
        finally:
            if hProc != None:
                hProc.Close()

        return True
python 2022/1/1 18:47:37 有339人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶