코루틴: 입력 매개변수를 처리할 수 있는 작업으로 함수를 작성합니다.
yield 문을 사용하여 Yield 표현식 형태로 코루틴을 생성합니다.
#Matcher 케이스:
def print_info(data): print('Looking for',data); while True: line = (yield) if data in line: print(line);
위 이 함수는 코루틴 프로그램입니다. 먼저 함수를 호출하고 첫 번째 항복 문
info = print_info('python'); info.__next__(); #向前执行第一条yield语句
를 실행해야 합니다. 출력 결과:
Looking for python
그런 다음 send를 사용합니다. 메소드는 처리를 위해 데이터를 코루틴으로 보냅니다
info.send('Hell world'); info.send('this is python'); info.send('python goods');
전송된 데이터에 데이터 매개변수 값이 포함되어 있으면 일치에 성공하고 데이터가 반환됩니다.
출력 결과:
Python을 찾는 중 <… 이를 종료하기 위한 다음 표현식을 만날 때까지 값을 반환합니다. 프로세스는 코루틴 함수가 반환되거나 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'))
myList의 값을 루프한 다음 코루틴 프로그램으로 보냅니다.
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
요약:
1, 코루틴: 코루틴은 입력 매개변수의 작업 함수를 처리할 수 있습니다. 호출이 프로그램으로 반환되면 추가 또는 새 매개변수가 전달될 수 있으며 중단한 부분부터 계속할 수 있습니다.
2, 전송 함수를 사용하여 코루틴에 매개변수를 보냅니다
위는 Python의 코루틴(coroutine) 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!