擅长:python、mysql、java
<p>通常,“工作”涉及一个大循环。要驯服循环并防止它在未知步骤中中断,可以使用以下上下文管理器:</p>
<pre><code>import signal
class GracefulInterruptHandler(object):
def __init__(self, sig=signal.SIGINT):
self.sig = sig
def __enter__(self):
self.interrupted = False
self.released = False
self.original_handler = signal.getsignal(self.sig)
def handler(signum, frame):
self.release()
self.interrupted = True
signal.signal(self.sig, handler)
return self
def __exit__(self, type, value, tb):
self.release()
def release(self):
if self.released:
return False
signal.signal(self.sig, self.original_handler)
self.released = True
return True
</code></pre>
<p>使用:</p>
^{pr2}$
<p>从这里:<a href="https://gist.github.com/2907502" rel="nofollow">https://gist.github.com/2907502</a></p>