栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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

atexit.register(func [,* args [, 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!

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

python > = 2.6不再需要以下Windows方法

这是一种杀死Windows中进程的方法。您的Popen对象具有pid属性,因此您可以通过 success = win_kill(p.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


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/638959.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号