亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

簡單了解python協(xié)程的相關知識

系統(tǒng) 1579 0

什么是協(xié)程

協(xié)程是python種一種實現(xiàn)多任務的方式,他是一種比線程更加小的單元,占用更小的執(zhí)行單元(資源),為啥說他是一個執(zhí)行單元,因為他自帶CPU上下文,這樣在合適gr的時機,可以把一個協(xié)程切換到另一個協(xié)程,只要在這個過程中保存和恢復cpu上下文那么程序還是可以運行的

通俗的理解: 一個線程中的某個函數(shù),可以在任何地方保存當前函數(shù)的一些臨時變量,然后切換到另一個函數(shù)中運行,并且切換的次數(shù)以及社么時候再切換回來是可控的

協(xié)程和線程的差異

在實現(xiàn)多任務時,線程會自己歡子一些數(shù)據(jù),操作系統(tǒng)切換時需要恢復數(shù)據(jù),所以線程恢復比較耗性能

協(xié)程底層原理(舉例)

            
'''
1,協(xié)程的實現(xiàn)原理,底層通過 yield 實現(xiàn)
'''
def work1(): #工作任務
  for i in range(10):
    print('work1----{}'.format(i))
    yield i
def work2():
  for i in range(10):
    print('work2----{}'.format(i))
    yield i
def work3():
  for i in range(10):
    print('work3----{}'.format(i))
    yield i
g1 = work1()
g2 = work2()
g3 = work3()
while True: #循環(huán)調用生成器實現(xiàn)任務切換
  try:
    print(next(g1))
    print(next(g2))
    print(next(g3))
  except StopIteration :
    pass
    break
          

協(xié)程 greenlet

            
python -m pip install greenlet
          

示例

            
'''
1,展示greenelent ,不能自動切換需要手動切換
'''
import greenlet
def work1():
  for i in range(10):
     print('work1----{}'.format(i))
     g2.switch()  #切換到g2
def work2():
  for i in range(10):
     print('work2----{}'.format(i))
     g1.switch() #切換到g1
g1 = greenlet.greenlet(work1) #返回協(xié)程對象
g2 = greenlet.greenlet(work2)
g1.switch() #啟動開關
          

執(zhí)行順序

簡單了解python協(xié)程的相關知識_第1張圖片

gevent

greenlet 已經(jīng)實現(xiàn)了協(xié)程,但是還是人工切換,gevent 提供了自動切換功能,其原理是執(zhí)行過程中遇到IO操作,自動切換

            
'''
協(xié)程gevent IO操作會切換
'''
import gevent
def work1(): # 工作任務
  for i in range(10):
    print('work1----{}'.format(i))
    gevent.sleep(0.5)
def work2():
  for i in range(10):
    print('work2----{}'.format(i))
    gevent.sleep(0.5)
g1 = gevent.spawn(work1) #指定工作函數(shù)
g2 = gevent.spawn(work2) #指定工作函數(shù)
g1.join()  #等待協(xié)程執(zhí)行完成再往下走
g2.join()
          

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。


更多文章、技術交流、商務合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 99视频九九精品视频在线观看 | 日韩午夜在线视频 | 欧美一级全部免费视频 | 国产福利短视频 | 日韩欧美毛片免费看播放 | 天天操天天干天天干 | 日韩欧美视频在线一区二区 | 福利色姬网站视频入口 | 日本久久综合视频 | 精品少妇一区二区三区视频 | 黄频免费观看 | 香蕉伊人久久 | 激情久久婷婷 | 国内精品久久久久影院网站 | 66av99精品福利视频在线 | 亚洲黄色片视频 | 99re久久在热线播放最新地址 | 91精品论坛 | 韩日性视频 | 狠狠叉 | 综合亚洲欧美日韩一区二区 | 国产成人a在一区线观看高清 | 久久精品免费观看久久 | 日日摸夜夜爽人人添 | 欧美日韩视频一区三区二区 | 亚洲综合在线观看一区www | 免费视频久久久 | 欧美综合图区 | 九九自拍视频 | 老司机午夜在线视频免费 | 亚洲欧美日韩在线不卡 | 69性影院在线观看国产精品87 | 亚洲一区二区三区四区 | 国产精品成人久久久久久久 | 亚洲欧美激情综合第一区 | 久久毛片 | 久久爱成人网 | 日韩精品中文字幕在线观看 | 国产精品一区二区三区免费视频 | 亚洲精品久久 | 亚洲二三区 |