欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2019年08月31日 15:10:55   作者:北京_星空  
這篇文章主要介紹了簡單了解python協(xié)程的相關知識,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

什么是協(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)調(diào)用生成器實現(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í)行順序

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()

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

相關文章

  • pytorch常用數(shù)據(jù)類型所占字節(jié)數(shù)對照表一覽

    pytorch常用數(shù)據(jù)類型所占字節(jié)數(shù)對照表一覽

    這篇文章主要介紹了pytorch常用數(shù)據(jù)類型所占字節(jié)數(shù)對照表一覽,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • Python基于easygui實現(xiàn)pdf和word轉換小程序

    Python基于easygui實現(xiàn)pdf和word轉換小程序

    這篇文章主要為大家詳細介紹了Python如何基于easygui實現(xiàn)pdf和word轉換小程序,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-04-04
  • 基于打開pycharm有帶圖片md文件卡死問題的解決

    基于打開pycharm有帶圖片md文件卡死問題的解決

    這篇文章主要介紹了基于打開pycharm有帶圖片md文件卡死問題的解決,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • Python用sndhdr模塊識別音頻格式詳解

    Python用sndhdr模塊識別音頻格式詳解

    這篇文章主要介紹了Python用sndhdr模塊識別音頻格式詳解,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01
  • matplotlib之Font family [‘sans-serif‘] not found的問題解決

    matplotlib之Font family [‘sans-serif‘] not&nbs

    本文主要介紹了matplotlib之Font family [‘sans-serif‘] not found的問題解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-03-03
  • python3爬蟲中多線程進行解鎖操作實例

    python3爬蟲中多線程進行解鎖操作實例

    在本篇文章里小編給大家整理了關于python3爬蟲中多線程進行解鎖操作實例內(nèi)容,需要的朋友們可以參考下。
    2020-11-11
  • Selenium爬取b站主播頭像并以昵稱命名保存到本地

    Selenium爬取b站主播頭像并以昵稱命名保存到本地

    這篇文章主要介紹了使用Selenium自動化爬取b站主播頭像并以昵稱命名保存到本地的方法,代碼簡單完整,對于大家練習Selenium自動化有一定的幫助,需要的朋友可以參考下
    2021-04-04
  • python中defaultdict方法的使用詳解

    python中defaultdict方法的使用詳解

    這篇文章主要介紹了python中defaultdict方法的使用,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04
  • Python中axis=0與axis=1指的方向有什么不同詳解

    Python中axis=0與axis=1指的方向有什么不同詳解

    對數(shù)據(jù)進行操作時,經(jīng)常需要在橫軸方向或者數(shù)軸方向?qū)?shù)據(jù)進行操作,這時需要設定參數(shù)axis的值,下面這篇文章主要給大家介紹了關于Python中axis=0與axis=1指的方向有什么不同的相關資料,需要的朋友可以參考下
    2024-01-01
  • Python構造函數(shù)屬性示例魔法解析

    Python構造函數(shù)屬性示例魔法解析

    Python構造函數(shù)和屬性魔法是面向?qū)ο缶幊讨械年P鍵概念,它們允許在類定義中執(zhí)行特定操作,以控制對象的初始化和屬性訪問,本文將深入學習Python中的構造函數(shù)和屬性魔法,包括構造函數(shù)__init__、屬性的@property和@attribute.setter等,以及它們的實際應用
    2023-12-12

最新評論