Python 如何使用threading.event函数终止线程?
我一直在考虑在用户中断后停止线程,但出于某种原因,它对我不起作用。有人能帮忙吗。问题是程序只是忽略键盘中断错误,键盘中断后程序不会关闭Python 如何使用threading.event函数终止线程?,python,multithreading,queue,Python,Multithreading,Queue,我一直在考虑在用户中断后停止线程,但出于某种原因,它对我不起作用。有人能帮忙吗。问题是程序只是忽略键盘中断错误,键盘中断后程序不会关闭 #!/usr/bin/env python # # from time import sleep from Queue import Queue from threading import Thread,Event,Lock def Count(): global Exit for i in range(5): try: if not E
#!/usr/bin/env python
#
#
from time import sleep
from Queue import Queue
from threading import Thread,Event,Lock
def Count():
global Exit
for i in range(5):
try:
if not Exit.is_set():
with l:
print i;sleep(2)
except KeyboardInterrupt:
Exit.set()
if __name__ == '__main__':
l = Lock()
q = Queue()
Exit = Event()
for i in range(2):
Bot = Thread(target=(Count)).start()
q.put(Bot)
#q.join()
#OutPut
0
1
^C2
3
4
0
Exception KeyboardInterrupt in <module 'threading' from '/usr/lib/python2.7/threading.pyc'> ignored
#/usr/bin/env python
#
#
从时间上导入睡眠
从队列导入队列
从线程导入线程、事件、锁
def Count():
全球出口
对于范围(5)中的i:
尝试:
如果不退出。是否设置为()
与l:
印刷品一;睡眠(2)
除键盘中断外:
Exit.set()
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
l=锁()
q=队列()
退出=事件()
对于范围(2)中的i:
Bot=线程(目标=(计数)).start()
q、 put(Bot)
#q、 加入
#输出
0
1.
^C2
3.
4.
0
忽略中的异常键盘中断
不完全清楚您想要实现什么。所以我重组了你的代码
您能否分享错误和预期行为?
from time import sleep
from threading import Thread, Event
def count():
global exit_event
for i in range(5):
try:
if not exit_event.is_set():
print i
sleep(2)
except KeyboardInterrupt:
print "Interrupt in thread"
exit_event.set()
exit_event = Event()
bot = Thread(target=count)
bot.start()
while not exit_event.is_set():
try:
sleep(0.1)
except KeyboardInterrupt:
print "Interrupt in main loop"
exit_event.set()
bot.join()