【发布时间】:2010-12-13 01:22:18
【问题描述】:
我有一个需要很长时间才能完成的程序。我想
它能够捕获SIGINT (ctrl-c) 并调用self.save_work() 方法。
就目前而言,我的signal_hander() 不起作用,因为
self 未在程序到达signal_handler() 时定义。
我该如何设置,以便在 SIGINT 之后调用 self.save_work?
#!/usr/bin/env python
import signal
def signal_handler(signal, frame):
self.save_work() # Does not work
exit(1)
signal.signal(signal.SIGINT, signal_handler)
class Main(object):
def do_stuff(self):
...
def save_work(self):
...
def __init__(self):
self.do_stuff()
self.save_work()
if __name__=='__main__':
Main()
【问题讨论】:
-
一方面,你不能在函数中使用“self”。