环境: python 3.9
背景: 如果我们需要在类实例退出的时候进行一些处理,通常,我们可以将会处理逻辑写在**__del__**函数中, 类实例销毁的之前会调用该函数。
但是如果是外部信号signal,如 ctrl+c, 中断程序时, 就不会掉用__del__函数。
因此, 本次将在类中加入signal 处理逻辑。
具体示例代码如下:
import signal
import time
import os
class Spider(object):
def __init__(self):
signal.signal(signal.SIGINT, self.quit)
def quit(self, signum, frame):
print("quit...")
os._exit(0)
def __del__(self):
print("__del__...")
def run(self):
# 执行了逻辑
while 1:
print("loop...")
time.sleep(3)
if __name__ == "__main__":
spider = Spider()
spider.run()
signal.signal(signalnum, handler)
handler 必须要接收两个参数, 可以设置执行默认操作,也可以自定义操作。那如果想忽略信号的话,也可以有两种操作方法:
os._exit(0) : 正常退出python 程序。