PythonのPythonのロロのコルーチン収量とgevent研究ノート[道の]

Pythonのコルーチン:

また、マイクロスレッドと呼ばれるコルーチンは、シュレッド。。コルーチン英単語はコルーチンが何であるかを説明します。コルーチンは、ユーザーの軽量スレッド状態です。

コルーチンは独自のスタックを持っているとコンテキストを登録します。コルーチンがハンドオーバをスケジュールするとき、コンテキストがバックレジスタを保存し、別の場所にスタック、カット、

以前に保存されたレジスタのコンテキストとスタックを復元します。したがって:コルーチンが最後の呼び出しとして残すことができる(すなわち、ローカル状態の全ての特定の組合せ)

各リエントラント、呼び出しに状態の同等の間に。論理フローの位置が終了したときに、別の言い方をします

 

コルーチンのメリット:

  • コンテキスト切り替えのオーバーヘッドをスレッドする必要はありません

  • ロックと同期アトミック操作を開始する必要はありません
  • スイッチ制御フローを容易に、簡略化されたプログラミングモデル
  • 高い同時実行+拡張性+低コスト:サポートコルーチン用CPU万人がすべて、高い並列処理のために非常に適し問題ではありません

コルーチン短所:

  • CUPマルチコアの利点を取ることができません、
  • 操作は、プログラム全体をブロックする(ブロック)ブロックされます

 

1.1降伏コルーチン:

インポート、インポートキューの

デフ消費者(名):
     印刷--------------開始------------ しばらく真:
        new_baozi = 降伏
        プリント' %sは包子%sを食べている'(名前、new_baozi))
        time.sleep( 1 

デフプロデューサー():
    R = CON。__next__() 也可以次に(CON)是 
    R = CON2。__next__ ()
    、N = 0
     、一方N <5 
        N + = 1 
        con.send(N)
        con2.send(N)
        プリント" ; \ 033 [32 0メートルの包子%sを作っている033 [\ 1メートル[プロデューサー] "%のN)の

場合 __name__ == " __main__ " 
    CON =消費者(' C1 ' 
    CON2 =消費者(' C2 ' 
    、P =生産者()

 

おすすめ

転載: www.cnblogs.com/rollost/p/10974607.html