Форум сайта python.su
Всем доброго времени суток!
Начал было разбираться с Многопоточностью в Python, но сталкнулся с такой проблемой.
Пишу код
class Parse(threading.Thread):
“”“Parse Feed”“”
def __init__(self, feed):
threading.Thread.__init__(self)
self.feed = feed
def run(self):
print self.feed
time.sleep(0.0001)
class Main(threading.Thread):
“”“Main thread”“”
def __init__(self, queue):
self.__queue = queue
threading.Thread.__init__(self)
def run(self):
self.__queue.get().start()
time.sleep(0.0001)
#print f.feed
if __name__ == “__main__”:
queue = Queue.Queue(0)
m = Main(queue).start()
f1 = Feeds("http://feedparser.org/docs/examples/atom10.xml“)
queue.put(f1)
time.sleep(0.0001)
f2 = Feeds(”http://feedparser.org/docs/examples/atom10.xml")
queue.put(f2)
time.sleep(0.0001)
Но почему только выводится на экран результат работы f1, а f2 проходит без следно. Не подскажите в чем может быть дело?
Офлайн
Пример не работает. Я, по крайней мере, не могу понять, что ты хочешь.
Приложи к нему какую-нибудь заглушку для Feeds и убедись, что хотя бы у тебя - запускается
Офлайн
потому что в методе Main.run() нужно организовать бесконечный цикл. Иначе после первого прохода поток благополучно завершается.
Офлайн
Андрей Светловя так думаю, потому что класс Parse и есть класс Feeds.
Пример не работает.
Офлайн
Ааа. Тогда - да. Не догадался :)
А зачем тогда Main thread. Parse thread можно и так запускакть “по месту”. На один поток меньше.
Если для баланстровки загрузки - то уже ThreadPool нужен.
Отредактировано (Июль 28, 2007 17:01:45)
Офлайн
Просто если я оформляю как сказал bialix то все равно выдается один результат
class Main(threading.Thread):
“”“Main thread”“”
def __init__(self, queue):
self.__queue = queue
threading.Thread.__init__(self)
def run(self):
while True:
self.__queue.get().start()
time.sleep(0.0001)
Офлайн
Извиняюсь все работает. Всем большое спасибо!
Офлайн
Отлично, что все работает.
Но я опять-таки возвращаюсь к теме хороших вопросов. Пример был некорректным, хоть и претендовал на полноту.
bialix догадался, в чем дело. Я - нет. Если бы не догадка - долго бы еще выясняли, что к чему. Или ответов не было бы. Или - были бы ответы вроде: “читай статьи по мультипоточке”.
Я не хочу никого обидеть. Просто мне кажется, что правильные вопросы - хороший способ поднять продуктивность форума.
Офлайн
я опять же согласен. когда я не догадываюсь, то не отвечаю.
Офлайн