【发布时间】:2011-08-16 07:42:57
【问题描述】:
我打算在 python 2.5.2 中使用线程/队列 但似乎 python 在 queue.join() 命令处被冻结。 以下代码的输出仅为: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()
有人知道出了什么问题吗?
【问题讨论】:
-
queue.put(1) ...并不是说这是解决方案。但只需检查所有函数的 id(queue) 是否相同......如果不是,则在函数中使用全局队列......
-
在 Windows 上使用 Python 2.6.6 对我来说效果很好
-
这段代码看起来非常完美,我整天都在读这种东西:\
-
@Eli - 我不认为这是复制粘贴错误,我认为这是他真正的错误。
-
@agf: 嗯,如果是这样,那很好:)
标签: python multithreading queue