gpt4 book ai didi

python - 如何在Python退出时捕获信号并传递变量?

转载 作者:行者123 更新时间:2023-12-01 01:36:54 25 4
gpt4 key购买 nike

我正在 try catch 信号并将变量传递给退出处理程序。

我现在使用的Python3信号处理signal.signal(signal.SIGINT, exit_handler)无法传递变量。

这是我的代码:

import signal

def main(driver):
""
# somecode

def exit_handler(sig, frame):
driver.quit()
db.update
# etc
exit()

if __name__ == '__main__':
driver = ""
database = ""
signal.signal(signal.SIGINT, exit_handler) # pass variable to exit_handler
exit()

如何实现这一目标?

最佳答案

Handler 需要是一个可调用对象,在调用时需要两个参数(信号号和当前堆栈帧)。您可以编写自己的对象并通过定义 __call__ 使其可调用方法,其构造函数接受一个或多个参数,您可以保留这些参数以供稍后调用时使用。例如:

import signal
import time

def main():
while True:
time.sleep(1)

class MyHandler:
def __init__(self, myvar):
self.myattr = myvar
def __call__(self, signo, frame):
print("My variable was:", self.myattr)

if __name__ == '__main__':
signal.signal(signal.SIGINT, MyHandler(123))
main()

如果需要,存储在处理程序实例中的值也可以在脚本的生命周期内更新,然后在调用时使用。

关于python - 如何在Python退出时捕获信号并传递变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52318231/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com