常州建站网站模板,wordpress主题会员付费,小红书seo排名优化,做外贸去哪个网站找客户环境#xff1a; python 3.9
背景#xff1a; 如果我们需要在类实例退出的时候进行一些处理#xff0c;通常#xff0c;我们可以将会处理逻辑写在**__del__**函数中#xff0c; 类实例销毁的之前会调用该函数。
但是如果是外部信号signal#xff0c;如 ctrlc#xff0…环境 python 3.9
背景 如果我们需要在类实例退出的时候进行一些处理通常我们可以将会处理逻辑写在**__del__**函数中 类实例销毁的之前会调用该函数。
但是如果是外部信号signal如 ctrlc 中断程序时 就不会掉用__del__函数。 因此 本次将在类中加入signal 处理逻辑。
具体示例代码如下
import signal
import time
import osclass 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)
signalnum具体信号handler信号的执行函数
handler 必须要接收两个参数 可以设置执行默认操作也可以自定义操作。那如果想忽略信号的话也可以有两种操作方法
直接在handler的函数体中写一个pass设置signal.SIG_DFL(默认执行)、signal.SIG_IGN(程序忽略该信号。
os._exit(0) 正常退出python 程序。