Потоки / очереди в Python - PullRequest
       6

Потоки / очереди в Python

1 голос
/ 16 августа 2011

Я собираюсь использовать потоки / очереди с python 2.5.2 Но похоже, что python зависает при использовании команды queue.join ().Вывод следующего кода только: ДО

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()

Кто-нибудь имеет представление о том, что идет не так?

Ответы [ 4 ]

1 голос
/ 09 июня 2013

Я думаю, что это часть t.setDaemon (True).

т.> 2,6

t.setDaemon (True)

<2,6 </p>

t.daemon = True

0 голосов
/ 01 декабря 2014

Использовать Daemon = True.Это обеспечит выход из вашего потока после выполнения основной функции.

0 голосов
/ 16 августа 2011

Решение, которое я сейчас нашел:

Не используйте Python 2.5.2! Если вместо этого использовать Python 2.7.2, приведенный выше код работает очень хорошо.

Спасибо всем!

0 голосов
/ 16 августа 2011

Вы запускаете метод () в вашем классе ThreadUrl с слишком большим отступом.В результате поток никогда не запускается.Если вы поместите отступ метода run на тот же уровень отступа, что и init (), он будет работать нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...