python中gevent协程库

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)  # 0到99的随机整数.
        q.put(item)
        print("producer {}".format(item))
        time.sleep(2)


p = gevent.spawn(producer)  # 启动协程. 还可以 , + 函数参数.
c = gevent.spawn(consumer)
gevent.joinall([p, c])  # 阻塞当前流程, 执行完给定的greenlet, 才继续走.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值