这是我的代码
from gevent import socket
import gevent
from gevent.queue import Queue
tasks = Queue()
def worker(name):
while not tasks.empty():
task = tasks.get() # decrements queue size by 1'
print('Worker %s got task %s' % (name, task))
addr = socket.gethostbyname('http://www.nxxc.net/opkyfx.html')
gevent.sleep(0)
print('Quitting time!')
def boss():
"""
Boss will wait to hand out work until a individual worker is
free since the maxsize of the task queue is 3.
"""
for i in xrange(1,10):
tasks.put(i)
print('Assigned all work in iteration 1')
boss()
print len(tasks)
gevent.joinall([
gevent.spawn(worker, 'steve'),
gevent.spawn(worker, 'john'),
gevent.spawn(worker, 'bob'),
])
print tasks.empty()
,输出
Assigned all work in iteration 1
9
Worker steve got task 1
Worker john got task 2
Worker bob got task 3
False
由于代码中的第9行,它应该在输出的最后一行中出现True。输出中应该有比6更多的行。 结果应类似于以下结果。
Assigned all work in iteration 1
9
Worker steve got task 1
Worker john got task 2
Worker bob got task 3
Worker steve got task 4
Worker john got task 5
Worker bob got task 6
Worker steve got task 7
Worker john got task 8
Worker bob got task 9
Quitting time!
Quitting time!
Quitting time!
True
删除第12行时发生上述结果。 为什么会这样? 帮帮我gevent专家!! 请解释!!