python多线程退出有关问题
python多线程退出问题
这个程序理论上应该一直阻塞,直到我按ctrl+c输出bye-bye然后退出,但实际运行的时候他会立刻输出bye-bye退出,好诡异啊。
关键是我之前运行的时候是对的,现在怎么都不行了
------解决方案--------------------
主线程并没有阻塞,而且一下子玩完,所以自然就退出啦。用while 1加个死循环试试,类似:
#!/usr/bin/python
import atexit
from threading import Thread
def exit_():
print 'bye-bye'
atexit.register(exit_)
def a():
while True:
continue
if __name__=='__main__':
try:
for i in range(3):
t=Thread(target=a)
t.setDaemon(True)
t.start()
except KeyboardInterrupt:
pass
这个程序理论上应该一直阻塞,直到我按ctrl+c输出bye-bye然后退出,但实际运行的时候他会立刻输出bye-bye退出,好诡异啊。
关键是我之前运行的时候是对的,现在怎么都不行了
------解决方案--------------------
主线程并没有阻塞,而且一下子玩完,所以自然就退出啦。用while 1加个死循环试试,类似:
if __name__=='__main__':
for i in range(3):
t=Thread(target=a)
t.setDaemon(True)
t.start()
while 1:
try:
time.sleep(1)
except KeyboardInterrupt:
break