需求背景:
使用python+selenium做web自动化。脚本异常退出时,需要关闭webdriver的chrome进程,不能让他驻留。本身程序出现异常时,已经用try…except…进行异常捕捉,在except中关闭了chrome。但是由于pythonexe是由QT程序QProces调用,进程会在QProcess中kill(),这种不正常的关闭就不能执行到except。所以需要这部分强制处理。
具体处理:
- 添加包:
import atexit - 定义强制处理函数:
第一种方法 注册函数:
def emergency():
代码处理
atexit.register(emergency)#注册强制处理。
这个注册函数还可以带参数,如果有参数的话。模版为:atexit.register(emergency,args,)
第二种方法 装饰器:
@atexit.register
def emergency():
代码处理
可以注册多个退出函数,会按照注册时间从晚到早开始执行。只有在函数不需要任何参数的情况下才可以使用,有参数的时候需要使用第一种。