首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

python多线程退出有关问题

2013-01-11 
python多线程退出问题#!/usr/bin/pythonimport atexitfrom threading import Threaddef exit_():print by

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

热点排行