コルーチン: 入力パラメータを処理できるタスクとして関数を記述します
yield ステートメントを使用し、式 yield の形式でコルーチンを作成します
#Matcher case:
def print_info(data): print('Looking for',data); while True: line = (yield) if data in line: print(line);
上記の関数はコルーチン プログラムです この関数を使用します。まず、これを呼び出して、最初の yield ステートメントまで実行する必要があります
info = print_info('python'); info.__next__(); #向前执行第一条yield语句
出力結果:
Python を探しています
次に、send メソッドを使用して、処理のためにデータをコルーチンに送信します
info.send('Hell world'); info.send('this is python'); info.send('python goods');
データが送信された場合データパラメータの値が含まれています。その後、マッチングが成功し、データが返されます
出力結果:
Pythonを探しています
これはPythonです
Pythonグッズです
send()がコルーチンに値を送信すると、プログラムは一時的に中断されます。値が送信されると、yield 式はこの値を返し、プログラムは次の式が見つかるまで戻り値を処理します。このプロセスは、コルーチン関数が返されるか、データに基づいて生成される close メソッドが呼び出されるまで実行され続けます。プログラムの一部はプログラムの別の部分によって使用されます (プロデューサー/コンシューマー パターン)。並行プログラムを作成する場合、コルーチンの役割は明らかです。データのユーザーを表します。
info =[ print_info('python'), print_info('hello'), print_info('chunrui') ]
for n in info: n.__next__();
def tail(f): for line in f : if not line: time.sleep(0.1); continue; #如果不存在 则推迟0.1s 进行下一次 yield line; myList = tail(open('E:/work.txt'))
for m in myList: for n in info: n.send(m);
Looking for python Looking for hello Looking for chunrui python is conputer language chunrui is name hello world is the first case I like to use python my name is chunrui
2. send 関数を使用してパラメータをコルーチンに送信します
上記はコルーチン (coroutine) の内容に注意してください。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) にアクセスしてください。