gevent协程库使用
"""
gevent 比 greenlet 更强. 协程库
协程是单线程, 遇到time.sleep() 是不能切换的.
gevent基于greenlet, 不需要手动切换, 遇到阻塞自动切换. 但是越到延时不切换.
gevent.sleep(2) 模拟阻塞, 会切换.
gevent.spawn(func) 启动协程对象.
gevent.joinall(list) 等待指定的greenlet走完, 再走.
"""
import time
import gevent
import random
from gevent.queue import Queue
q = Queue(2)
def consumer():
while True:
item = q.get()
print("consumer {}".format(item))
time.sleep(2)
def producer():
while True:
item = random.randint(0, 99)
q.put(item)
print("producer {}".format(item))
time.sleep(2)
p = gevent.spawn(producer)
c = gevent.spawn(consumer)
gevent.joinall([p, c])