python中keyboardinterrupt_如何防止代码块在Python中被KeyboardInterrupt中断?
將函數放在一個線程中,并等待線程完成。
Python線程不能被中斷,除非有一個特殊的C api。
import time
from threading import Thread
def noInterrupt():
for i in xrange(4):
print i
time.sleep(1)
a = Thread(target=noInterrupt)
a.start()
a.join()
print "done"
0
1
2
3
Traceback (most recent call last):
File "C:\Users\Admin\Desktop\test.py", line 11, in
a.join()
File "C:\Python26\lib\threading.py", line 634, in join
self.__block.wait()
File "C:\Python26\lib\threading.py", line 237, in wait
waiter.acquire()
KeyboardInterrupt
看到中斷被延遲,直到線程完成?
這里它適合您的使用:
import time
from threading import Thread
def noInterrupt(path, obj):
try:
file = open(path, 'w')
dump(obj, file)
finally:
file.close()
a = Thread(target=noInterrupt, args=(path,obj))
a.start()
a.join()
總結
以上是生活随笔為你收集整理的python中keyboardinterrupt_如何防止代码块在Python中被KeyboardInterrupt中断?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql查询交叉连接_复杂的MySQL
- 下一篇: echarts搭配MySQL_Echar