Coroutine: Schreiben Sie eine Funktion als Aufgabe, die Eingabeparameter verarbeiten kann
Verwenden Sie die yield-Anweisung und erstellen Sie eine Coroutine in Form des Ausdrucks yield
# Matcher-Fall:
def print_info(data): print('Looking for',data); while True: line = (yield) if data in line: print(line);
Die obige Funktion ist ein Coroutine-Programm. Um diese Funktion zu verwenden, müssen Sie sie zunächst aufrufen und zur ersten Yield-Anweisung weiterleiten.
info = print_info('python'); info.__next__(); #向前执行第一条yield语句
Ausgabeergebnis:
Suche nach Python
Verwenden Sie dann die Sendemethode, um Daten zur Verarbeitung an die Coroutine zu senden
info.send('Hell world'); info.send('this is python'); info.send('python goods');
Wenn die gesendeten Daten den Datenparameterwert enthalten, ist die Übereinstimmung erfolgreich und die Daten werden zurückgegeben
Ausgabeergebnis:
Suche nach Python
Das ist Python
Python-Ware
Wenn send() einen Wert an die Coroutine sendet, wird das Programm vorübergehend angehalten. Nach dem Senden des Werts gibt der Yield-Ausdruck diesen Wert zurück. Das nachfolgende Programm verarbeitet den Rückgabewert, bis es auf den nächsten Ausdruck stößt, und dieser Prozess wird weiter ausgeführt, bis die Coroutine-Funktion zurückkehrt oder die Schließmethode aufgerufen wird
Die auf einem Teil des Programms generierten Daten werden von verwendet ein weiterer Teil des Programms (Produzenten-Konsumenten-Modus)
Beim Schreiben gleichzeitiger Programme ist die Rolle der Coroutine offensichtlich. Sie stellt einen Benutzer von Daten dar.
info =[ print_info('python'), print_info('hello'), print_info('chunrui') ]
bereitet alle Matcher durch Aufruf von __next__() vor.
for n in info: n.__next__();
definiert eine Funktion zum Abrufen der Datei. Jede Datenspalte wird an den Generator übergeben.
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'))
durchläuft die Werte in myList und dann an das Coroutine-Programm gesendet
for m in myList: for n in info: n.send(m);
Ausgabeergebnis:
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
Zusammenfassung:
1 Coroutine kann die Aufgabenfunktion des verarbeiten Eingabeparameter. Wenn die Coroutine angehalten wird, erhalten wir den Rückgabewert von ihr und können ihn weitergeben, wenn der Aufruf an das Programm zurückgegeben wird. Sie können weiterhin an der Stelle fortfahren, an der Sie aufgehört haben, indem Sie zusätzliche oder neue Parameter hinzufügen
2. Verwenden Sie die Sendefunktion, um Parameter an die Coroutine zu senden
Das Obige ist die Coroutine (Coroutine) in Python. Weitere Informationen finden Sie auf der chinesischen PHP-Website (www.php.cn). Verwandte Inhalte!