協程

協程昼捍,又稱微線程识虚,纖程。英文名Coroutine妒茬。協程是一種用戶態(tài)的輕量級線程担锤。
協程擁有自己的寄存器上下文和棧。協程調度切換時乍钻,將寄存器上下文和棧保存到其他地方肛循,在切回來的時候,恢復先前保存的寄存器上下文和棧银择。
因此多糠,協程能保留上一次調用時的狀態(tài)(即所有局部狀態(tài)的一個特定組合),每次過程重入時浩考,就相當于進入上一次調用的狀態(tài)夹孔,換種說法,進入上一次離開時所處邏輯流的位置析孽。

協程的好處:

  • 無需現成上下文切換的開銷
  • 無需原子操作鎖定及同步的開銷
  • 方便切換控制流搭伤,簡化編程模型
  • 高并發(fā)+高擴展性+低成本:一個CPU支持上萬個協程都不是問題。很適合用于高并發(fā)處理袜瞬。

缺點:

  • 無法利用多核資源:協程的本質是個單線程怜俐,不能同時將單個CPU的多個核用上,協程需要和進程配合才能運行在多CPU上邓尤。
  • 進行阻塞(Blocking)操作(如IO時)會阻塞掉整個程序

使用yield實現協程操作例子

# encoding: utf-8
"""
@author: Nero
@contact: csnero@qq.com
@time: 2020/7/21 21:54
@file: gevent下的纖程.py
@desc:
"""

#!/usr/bin/env python
# -*- coding:utf-8 -*-

from greenlet import greenlet

def test1():
  print(12)
  gr2.switch()
  print(34)
  gr2.switch()

def test2():
  print(56)
  gr1.switch()
  print(78)

gr1 = greenlet(test1)
gr2 = greenlet(test2)
gr1.switch()

Gevent是一個第三方庫拍鲤,可以通過gevent實現并發(fā)同步或異步編程,在gevent中用到的主要模式是Greenlet,他以C擴展模塊形式接入python的輕量級協程裁赠。greenlet全部運行在主程序操作系統進程的內部殿漠,但是他們被協作式調度。

import gevent
def foo
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末佩捞,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子蕾哟,更是在濱河造成了極大的恐慌一忱,老刑警劉巖莲蜘,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異帘营,居然都是意外死亡票渠,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進店門芬迄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來问顷,“玉大人,你說我怎么就攤上這事禀梳《耪” “怎么了?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵算途,是天一觀的道長塞耕。 經常有香客問我,道長嘴瓤,這世上最難降的妖魔是什么扫外? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮廓脆,結果婚禮上筛谚,老公的妹妹穿的比我還像新娘。我一直安慰自己停忿,他們只是感情好刻获,可當我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著瞎嬉,像睡著了一般蝎毡。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上氧枣,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天沐兵,我揣著相機與錄音,去河邊找鬼便监。 笑死扎谎,一個胖子當著我的面吹牛,可吹牛的內容都是我干的烧董。 我是一名探鬼主播毁靶,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼逊移!你這毒婦竟也來了预吆?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤胳泉,失蹤者是張志新(化名)和其女友劉穎拐叉,沒想到半個月后岩遗,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡凤瘦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年宿礁,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蔬芥。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡梆靖,死狀恐怖,靈堂內的尸體忽然破棺而出笔诵,到底是詐尸還是另有隱情返吻,我是刑警寧澤,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布嗤放,位于F島的核電站思喊,受9級特大地震影響,放射性物質發(fā)生泄漏次酌。R本人自食惡果不足惜恨课,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望岳服。 院中可真熱鬧剂公,春花似錦、人聲如沸吊宋。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽璃搜。三九已至拖吼,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間这吻,已是汗流浹背吊档。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留唾糯,地道東北人怠硼。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像移怯,于是被迫代替她去往敵國和親香璃。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,927評論 2 355