本文介绍了Python中的线程/队列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我打算在python 2.5.2中使用线程/队列但是似乎python在queue.join()命令处冻结了.followong代码的输出仅为:BEFORE

I intend using threads/queues with python 2.5.2But it seems that python becomes freezed at the queue.join()-command.The output of the followong code is only: BEFORE

import Queue
import threading

queue = Queue.Queue()

class ThreadUrl(threading.Thread):

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

    def run(self):
        while True:

            i = self.queue.get()
            print i
            self.queue.task_done()


def main():

    for i in range(5):
        t = ThreadUrl(queue)
        t.setDaemon(True)
        t.start()

    for i in range(5):
        queue.put(i)

    print "BEFORE"
    queue.join()
    print "AFTER"


main()

有人对出什么问题有想法吗?

Has someone an idea about what is going wrong?

推荐答案

我认为这是t.setDaemon(True)部分.

因此在Python> 2.6中,使用:

So in Python > 2.6, use:

t.setDaemon(True)

在Python中< 2.6,使用:

And in Python < 2.6, use:

t.daemon = True

这篇关于Python中的线程/队列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-20 06:46