マイクロスレッド、ファイバーとしても知られるCoroutine。英語名はCoroutineです。
Coroutineは、Pythonでのマルチタスクの別の方法ですが、スレッドよりも小さい実行単位(必要なリソースとして理解されます)を占有します。 CPUコンテキストが付属しているため、実行ユニットである理由。このようにして、適切なタイミングである限り、あるコルチンから別のコルチンに切り替えることができます。このプロセス中にCPUコンテキストが保存または復元されている限り、プログラムは実行できます。
一般的な理解:スレッド内の関数では、現在の関数の一時変数やその他の情報をどこにでも保存してから、別の関数に切り替えて実行できます。関数を呼び出すことによって行われるのではなく、切り替えられることに注意してください。元の機能に切り替える回数とタイミングは、開発者自身が決定します。
マルチタスクを実装する場合、スレッドの切り替えは、システムレベルからCPUコンテキストを保存および復元するだけではありません。プログラムの実行を効率化するために、オペレーティングシステムにはスレッドごとに独自のキャッシュとその他のデータがあり、オペレーティングシステムはこれらのデータの復元にも役立ちます。したがって、スレッドの切り替えは非常にパフォーマンスが高くなります。しかし、コルーチンの切り替えはCPUを操作するコンテキストにすぎないため、システムは1秒間に数百万回の切り替えに抵抗できます。
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