python多线程退出有关问题

python多线程退出问题

#!/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