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'),
])

  執行結果如圖

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM