Python 发生异常时停止线程
我有10个线程,问题是当出现异常时,Python 发生异常时停止线程,python,multithreading,exit,terminate,Python,Multithreading,Exit,Terminate,我有10个线程,问题是当出现异常时,bye将打印10次 我只想打印一次,然后终止所有线程。这个问题有什么解决办法吗 from threading import Thread def printmsg(msg,threadNumber): while True: try: print 'this is your message %s -- Thread Number:%s'%(msg,threadNumber) except:
bye
将打印10次
我只想打印一次,然后终止所有线程。这个问题有什么解决办法吗
from threading import Thread
def printmsg(msg,threadNumber):
while True:
try:
print 'this is your message %s -- Thread Number:%s'%(msg,threadNumber)
except:
exit('Bye')
for i in range(0,11):
Thread(target=printmsg,args=('Hello Wrold',str(i))).start()
您可以在线程中设置一个标志。在主循环中,您可以连续地
join()
所有线程,以等待它们消失,然后如果设置了标志,则打印一条消息
该标志甚至可以是异常的值…尝试通过主线程连接所有子线程。在主线程中完成您的工作
from threading import Thread, Lock
stop = False
lock = Lock()
def printmsg(msg, threadNumber):
global stop
while True:
try:
if threadNumber in [3, 5, 7, 9]: # Something wrong happens
raise NotImplementedError
lock.acquire()
if stop:
lock.release()
break
print 'This is your message %s -- Thread Number: %s' % (msg, threadNumber)
lock.release()
except NotImplementedError:
lock.acquire()
if not stop:
stop = True
print 'Bye'
lock.release()
break
for i in range(0,11):
Thread(target=printmsg, args=('Hello World', i)).start()
#-*-coding:utf-8-*-
from threading import Thread
def printmsg(msg,threadNumber):
while True:
try:
print 'this is your message %s -- Thread Number:%s'%(msg,threadNumber)
raise
except:
break
if __name__ == '__main__':
threads = []
for i in range(0,11):
threads.append(Thread(target=printmsg,args=('Hello Wrold',str(i))))
for t in threads:
t.start()
for t in threads:
t.join()
exit('Bye')
示例代码中的语法错误是为了引发异常吗?好吧,您已经在这段时间内修复了它。顺便说一下,您正在启动11个线程,而不是10个。检查你的间隔逻辑。