我有一个非常简单的例子,它打印出名称,但问题是,当我按 ctrl+C 时,程序没有返回到正常的命令行界面:
^CStopping 
在我只看到我的光标在闪烁之后,但我什么也做不了,所以我不得不关闭窗口并再次打开它。我正在运行 Ubuntu 12.10。
那是我的代码:
import threading
import random
import time
import Queue
import urllib2
import sys
queue = Queue.Queue()
keep_running = True
class MyThread(threading.Thread):
    def __init__(self, queue):
        threading.Thread.__init__(self)
        self.queue = queue
        self.names = ['Sophia', 'Irina', 'Tanya', 'Cait', 'Jess']
    def run(self):
        while keep_running:
            time.sleep(0.25)
            line = self.names[random.randint(0,len(self.names)-1)]
            queue.put(line)
            self.queue.task_done()
class Starter():
    def __init__(self):
        self.queue = queue
        t = MyThread(self.queue)
        t.start()
        self.next()
    def next(self):
        while True:
            time.sleep(0.2)
            if not self.queue.empty():
                line = self.queue.get()
                print line, self.queue.qsize()
            else:
                print 'waiting for queue'
def main():  
    try:
        Starter()     
        queue.join()
    except KeyboardInterrupt, e:
        print 'Stopping'
        keep_running = False
        sys.exit(1)
main()