【发布时间】:2014-12-10 07:40:47
【问题描述】:
我想在我的脚本中实现正确的 SIGINT 处理,它会打开多个文件和一个数据库连接。如果脚本是 CTRL+C'd 或以其他方式中断,则应关闭这些。
之前我使用KeyboardInterrupt 异常来捕获 CTRL+C,在那里我检查了文件/连接是否已定义,如果定义了,则关闭它们,然后退出。
这真的是pythonic的方式吗,还是建议使用信号处理程序更好?例如
import signal, sys, time
def handler(signum, frame):
print("..kthxbye")
sys.exit(1)
def main():
signal.signal(signal.SIGINT, handler)
i = 0
while True:
print(i)
i += 1
time.sleep(1)
if __name__ == "__main__":
main()
这对我来说似乎更干净,但我不知道如何将文件名或数据库连接传递给处理程序。
【问题讨论】:
标签: python signals exit interrupt-handling