zoukankan      html  css  js  c++  java
  • 协程greenlet与gevent模块

    '''
    定义:协程是一种用户态的轻量级线程
    好处:方便切换控制流,简化编程模型
    高并发+高扩展性+低成本:一个CPU支持上万的协程都不是问题。所以很适合用于高并发处理
    无需原子操作锁定及同步的开销
    无需线程上下文切换的开销
    
    缺点:
    无法利用多核资源:协程的本质是个单线程
    协程需要和进程配合才能运行在多CPU上
    进行阻塞(Blocking)操作(如IO时)会阻塞掉整个程序
    
    
    # greenlet是一个用C实现的协程模块,它可以使你在任意函数之间随意切换
    '''
    from greenlet import greenlet
    
    def test1():
        print("123")
        g2.switch()
        print("iii")
        g1.switch()
    
    def test2():
        print("222")
        g1.switch()
    
    g1 = greenlet(test1)
    g2 = greenlet(test2)
    g1.switch()
    
    
    #Gevent 是一个第三方库,可以轻松通过gevent实现并发同步或异步编程,在gevent中用到的主要模式是Greenlet
    
    import gevent
    import time
    
    start = time.time()
    def fun1():
        print("aaaaaaa")
        gevent.sleep(2)
        print("cccccccc")
    
    def fun2():
        print("bbbbbbb")
        gevent.sleep(1)
        print("dddddddd")
    
    gevent.joinall([
        gevent.spawn(fun1),
        gevent.spawn(fun2)
    ])
    
    end = time.time()
    print(start- end)
  • 相关阅读:
    题解 CF700E Cool Slogans
    题解 LOJ2065 「SDOI2016」模式字符串
    以guest账号无密码访问设置
    共享
    计算机的C$共享在哪里
    网卡工作原理
    iperf网络测试
    Jmeter安装与使用(压测)
    压测工具使用(vegeta)
    Alertmanager 安装(k8s报警)
  • 原文地址:https://www.cnblogs.com/TKOPython/p/12486425.html
Copyright © 2011-2022 走看看