unu*_*tbu 5 python signals sigint
我有一个需要很长时间才能完成的程序。我希望它能够捕获SIGINT
(ctrl-c) 并调用该self.save_work()
方法。
就目前而言, mysignal_hander()
不起作用,因为
self
程序到达signal_handler()
.
我如何设置它以便self.save_work
在 a 之后被调用SIGINT
?
#!/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()
Run Code Online (Sandbox Code Playgroud)
如果您只想捕获 ctr+c 那么您可以捕获KeyboardInterrupt异常:
class Main(object):
def do_stuff(self):
...
def save_work(self):
...
def __init__(self):
try:
self.do_stuff()
except KeyboardInterrupt:
pass # Or print helpful info
self.save_work()
Run Code Online (Sandbox Code Playgroud)
毕竟我并不认为这是一个好的设计。看来您需要使用函数而不是构造函数。
归档时间: |
|
查看次数: |
609 次 |
最近记录: |