zoukankan      html  css  js  c++  java
  • Python之协程的实现

    1、Python里面一般用gevent实现协程协程,

         而协程就是在等待的时候切换去做别的操作,相当于将一个线程分块,充分利用资源

    (1)低级版协程的实现

    import gevent
    
    def test1():
        print(1,2)
        gevent.sleep(0)#执行到这里的时候切换去函数test2
        print(3,4)
    
    
    
    def test2():
        print(5,6)
        gevent.sleep(0)
        print(7,8)
    
    gevent.joinall(
        [gevent.spawn(test1),gevent.spawn(test2)]
    )#在函数test1等待的时候,协程去执行了函数test2
    

      结果如图

    这里属于手动切换

    (2)高级版协程

    from gevent import monkey;monkey.patch_all()# 用来在运行时动态修改已有的代码,而不需要修改原始代码。
    
    import gevent
    import requests
    
    def f(url):
        print('GET: %s' % url)
        html = requests.get(url).text
        print(url,len(html))
    
    
    gevent.joinall([
        gevent.spawn(f,'http://i.maxthon.cn/'),#先执行这个函数,发送请求,等待的时候发送第二个请求
        gevent.spawn(f,'http://www.jianshu.com/u/3cfeb3395a95'),
        gevent.spawn(f,'http://edu.51cto.com/?jydh'),
    ])
    

      执行结果如图

  • 相关阅读:
    题目:心灵的抚慰
    间谍网络
    tarjan算法模版
    rect
    学校食堂
    题目:自然的雪糕
    Winform里众多上下文菜单的控制要怎么做?
    ubuntu更新列表
    瞧,Silverlight是如何被部署到客户机的
    盖茨十条成功箴言 值得一生铭记
  • 原文地址:https://www.cnblogs.com/xiaobeibei26/p/6493351.html
Copyright © 2011-2022 走看看