Pythonマルチタスク-日常

Coroutine#

マイクロスレッド、ファイバーとしても知られるCoroutine。英語名はCoroutineです。

Coroutineは、Pythonでのマルチタスクの別の方法ですが、スレッドよりも小さい実行単位(必要なリソースとして理解されます)を占有します。 CPUコンテキストが付属しているため、実行ユニットである理由。このようにして、適切なタイミングである限り、あるコルチンから別のコルチンに切り替えることができます。このプロセス中にCPUコンテキストが保存または復元されている限り、プログラムは実行できます。

一般的な理解:スレッド内の関数では、現在の関数の一時変数やその他の情報をどこにでも保存してから、別の関数に切り替えて実行できます。関数を呼び出すことによって行われるのではなく、切り替えられることに注意してください。元の機能に切り替える回数とタイミングは、開発者自身が決定します。

コルティンとスレッドの違い#

マルチタスクを実装する場合、スレッドの切り替えは、システムレベルからCPUコンテキストを保存および復元するだけではありません。プログラムの実行を効率化するために、オペレーティングシステムにはスレッドごとに独自のキャッシュとその他のデータがあり、オペレーティングシステムはこれらのデータの復元にも役立ちます。したがって、スレッドの切り替えは非常にパフォーマンスが高くなります。しかし、コルーチンの切り替えはCPUを操作するコンテキストにすぎないため、システムは1秒間に数百万回の切り替えに抵抗できます。

coroutine#の簡単な実装

import time

def task1():while True:print("--1--")
  time.sleep(0.1)yield

def task2():while True:print("--2--")
  time.sleep(0.1)yield

def main():
 t1 =task1()
 t2 =task2()while True:next(t1)next(t2)if __name__ =='__main__':main()"""
--1----2----1----2----1----2----1----2----1----2----1----2----1----2----1----2----1----2----1----2----1--
省略...."""

Recommended Posts

Pythonマルチタスク-日常
Pythonマルチスレッド
Python CookBook
Python3辞書
Python3モジュール
python(you-get)
Python文字列
Pythonの基本
Python記述子
Pythonの基本2
Python exec
Pythonノート
Python3タプル
CentOS + Python3.6 +
Python Advanced(1)
Pythonデコレータ
Python IO
Pythonマルチスレッド
Pythonツールチェーン
Python3リスト
Pythonの概要
pythonの紹介
Pythonアナリティック
Pythonの基本
07.Python3関数
Pythonの基本3
Pythonマルチタスクスレッド
Python関数
python sys.stdout
python演算子
Pythonエントリ-3
Centos 7.5 python3.6
Python文字列
pythonキューキュー
Pythonの基本4
Pythonの基本5
Centos6はPython2.7.13をインストールします
Pythonは質問に答えます
Pythonの基本構文(1)
Pythonはloopメソッドを終了します
Ubuntu16アップグレードPython3
Centos7はPython3.6をインストールします。
ubuntu18.04インストールpython2
Pythonの古典的なアルゴリズム
ubuntuを再学習します--python3
Python文字列操作
Python研究ノート(1)
python学習ルート
Python3の基本構文
Pythonレビュー1
pythonの関数
Python学習変数タイプ
CentOSはPython3.6をインストールします
Python3.9の7つの機能
Pythonファイル操作
ubuntu12.04インストールpython3
Pythonのデザインパターン
Python-centos6のインストール
Centos7はPython2.7をインストールします
01.Pythonの概要
100の小さなPythonの例