def _extra_main(extra_func, threaded, intr_event, proc_idx, args):
if not threaded:
_interrupted = False
def raise_kbdintr(signum, frame):
nonlocal _interrupted
if not _interrupted:
_interrupted = True
raise KeyboardInterrupt
# restore signal handler.
signal.signal(signal.SIGINT, raise_kbdintr)
signal.pthread_sigmask(signal.SIG_UNBLOCK, {signal.SIGINT})
intr_event = None
try:
extra_func(intr_event, proc_idx, args)
except SystemExit:
pass
finally:
if not threaded:
# same as in _worker_main()
signal.pthread_sigmask(signal.SIG_BLOCK, {signal.SIGINT})
评论列表
文章目录