您好,匿名用户
随意问技术百科期待您的加入

python消息队列服务退出的问题

0 投票

最近用python处理一个消息队列的问题 所有功能都完善了 到现在还有一个没有解决的问题就是 当服务打开后 无法使用ctrl+c 或者发送结束的single结束 每次都要kill进程号才可以 不知道有没有更好的办法

消息队列结构代码如下:对线程其实还是有点迷糊的 指导下 谢谢。

#encoding=utf-8
import threading
import random
import time
from Queue import Queue

class Producer(threading.Thread):

    def __init__(self, threadname, queue):
        threading.Thread.__init__(self, name = threadname)
        self.sharedata = queue

    def run(self):
        while True:
            for i in range(20):
                print self.getName(),'adding',i,'to queue'
                self.sharedata.put(i)
                time.sleep(random.randrange(10)/10.0)
            time.sleep(8)
            print '======== NEW ==========='
        print self.getName(),'Finished'


# Consumer thread

class Consumer(threading.Thread):


    def __init__(self, threadname, queue):
        threading.Thread.__init__(self, name = threadname)
        self.sharedata = queue


    def run(self):
        while True:
            print self.getName(),'got a value:',self.sharedata.get()
            time.sleep(random.randrange(10)/10.0)
        print self.getName(),'Finished'


# Main thread

def main():

    queue = Queue()
    producer = Producer('Producer', queue)
    consumer = Consumer('Consumer', queue)
    print 'Starting threads ...'
    producer.start()
    consumer.start()
    producer.join()
    consumer.join()
    print 'All threads have terminated.'
if __name__ == '__main__':
    main()
用户头像 提问 2012年 12月1日 @ Trundle 上等兵 (301 威望)
分享到:

1个回答

0 投票
用户头像 回复 2012年 12月1日 @ Volibear 上等兵 (259 威望)
提一个问题:

相关问题

0 投票
1 回复 85 阅读
用户头像 提问 2013年 9月26日 @ 末日姐 上等兵 (172 威望)
0 投票
1 回复 42 阅读
用户头像 提问 2013年 9月17日 @ Fizz 上等兵 (325 威望)
0 投票
1 回复 38 阅读
用户头像 提问 2012年 12月1日 @ Trish 上等兵 (154 威望)
+1 投票
1 回复 472 阅读

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...