Python中是否有某种方法可以捕获KeyboardInterrupt
事件而不将所有代码放在try
- except
语句中?
如果用户按Ctrl+,我想干净利落地退出C.
我正在使用python的多处理优雅地处理键盘中断问题
(是的,我知道Ctr-C不应该保证正常关闭 - 但是让我们讨论一个不同的线程)
考虑以下代码,其中我是用户a multiprocessing.Manager#list()
,我理解的ListProxy处理列表的多进程访问.
当我使用Ctr-C时 - 我socket.error: [Errno 2] No such file or directory
在尝试访问ListProxy时得到了一个
我希望共享列表不会在Ctr-C上被破坏.这可能吗?!
注意:我想在不使用池和队列的情况下解决此问题.
from multiprocessing import Process, Manager
from time import sleep
def f(process_number, shared_array):
try:
print "starting thread: ", process_number
shared_array.append(process_number)
sleep(3)
shared_array.append(process_number)
except KeyboardInterrupt:
print "Keyboard interrupt in process: ", process_number
finally:
print "cleaning up thread", process_number
if __name__ == '__main__':
processes = []
manager = Manager()
shared_array = manager.list()
for i in xrange(4):
p = Process(target=f, args=(i, shared_array))
p.start() …
Run Code Online (Sandbox Code Playgroud)