我正在尝试用做某事的工作人员来实现一个简单的队列。
程序应该等到工作人员完成清空队列,然后继续执行。
我拿了文档示例并尝试在一个类中实现它,因为这就是它将在我的项目中实现的方式。
像这样:
class Test:
def __init__(self, n, q):
self.q = Queue()
print "Starting workers..."
for i in range(n):
t = threading.Thread(target=self.worker)
t.daemon = True
t.start()
print "Workers started"
for i in range(q):
self.q.put(i)
self.q.join()
print "Exiting"
def worker(self):
name = threading.currentThread().getName()
print "Thread %s started" % name
while True:
item = self.q.get()
print "Processing item %d" % item
sleep(1)
self.q.task_done()
实例化类t = Test(2, 100)
时,我只能看到"Thread... started"
消息并且程序挂起。
代码有什么问题?
编辑:
我刚刚注意到,虽然这段代码挂在IDLE
(我测试它的地方),但它在命令行上完美地执行。
看来是环境问题。