zoukankan      html  css  js  c++  java
  • 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()
    
    
    
    
  • 相关阅读:
    QuartzQuartz定时任务
    jdbc模糊查询、分页查询、联合查询
    PreparedStatement
    web服务器简述
    JDBC基本操作
    RMI
    Http编程
    2020毕业季业务开发宝典
    程序设计流程图
    系统概要框图
  • 原文地址:https://www.cnblogs.com/lajiao/p/11686319.html
Copyright © 2011-2022 走看看