• gevent


    
    
    #gevent间的通信,由于gevent不需要我们手动切换,而
    # 是遇到阻塞就切换,因此我们不会去使用switch
    from gevent import monkey;monkey.patch_all()
    import gevent
    from gevent.queue import Queue
    import random
    queue=Queue(3)
    
    def producer(queue):
        while True:
            item=random.randint(0,99)
            print('生产了%s'%item)
            queue.put(item)
    
    def consumer(queue):
        while True:
            item=queue.get()
            print('消费了%s' % item)
    
    p=gevent.spawn(producer,queue)  #将函数封装成协程,并开始调度
    c=gevent.spawn(consumer,queue)
    
    #gevent.sleep(1)
    gevent.joinall([p,c]) #阻塞等待,传入的所有协程结束
    
    
    
    
    
    
    
    
    #greenlet的基本使用:把函数封装成协程,用C写的,比yield性能好,并且使用简单
    from greenlet import  greenlet
    import random
    import time
    def producer():
        while True:
            item=random.randint(0,99)
            print('生产了%s'%item)
            #要切换到a协程就a.switch()
            c.switch(item)  #切换到消费者,并将item传给消费者 c.send()
            time.sleep(1)
    
    
    def consumer():
        while True:
            item=p.switch()  #item=(yield)
            print('消费了%s' % item)
    c=greenlet(consumer)  #直接将producer封装成协程
    p=greenlet(producer)
    c.switch()
    
    
    
    
  • 相关阅读:
    C++输入cout与输出cin
    golang学习笔记
    vscode环境配置
    golang 微框架 gin
    git go使用socket5代理
    go包管理工具glide
    collectd的python插件(redis)
    zookeeper & kafka 集群
    redis复制集(sentinel)
    python加解密
  • 原文地址:https://www.cnblogs.com/lajiao/p/11686319.html
Copyright © 2020-2023  润新知