코루틴은 Tornado에서 권장되는 프로그래밍 방법입니다. 코루틴을 사용하면 간단하고 효율적인 비동기 처리 코드를 개발할 수 있습니다.
동기식 I/O와 비동기식 I/O의 비교
우리 모두 알고 있듯이 CPU의 작동 효율은 디스크 스토리지보다 높고 네트워크 요청보다 높기 때문에 CPU에서 데이터 및 데이터 스토리지 또는 네트워크 요청을 처리하게 됩니다. (I/O 작업) 속도가 일치하지 않습니다. 이때 동기 또는 비동기 I/O 작업을 선택할 수 있습니다.
동기 I/O 작업으로 인해 I/O 작업이 완료될 때까지 프로세스가 차단됩니다.
비동기 I/O 작업으로 인해 요청하는 프로세스가 차단되지 않습니다.
Tornado 동기식 I/O의 간단한 코드 예:
Code:
#导入Tornado的HTTP客户端 from tornado.httpclient import HTTPClient def synchronous_visit(): http_client=HTTPClient() #阻塞,知道对网址访问完成 respone=http_client.fetch("http://www.baidu.com") print(respone.body) synchronous_visit()
HTTPClient는 Tornato의 동기식 액세스 HTTP 클라이언트입니다. 위 코드의 synchronous_visit() 함수는 일반적인 동기식 I/O 동작을 사용하여 URL에 접근한다. 이 함수의 실행 시간은 접속이 완전히 완료된 경우에만 네트워크 속도와 상대 서버의 응답 속도에 따라 달라진다. 결과가 얻어지면 이 기능은 실행을 완료할 수 있습니다.
Tornado 비동기 I/O의 간단한 코드 예:
from tornado.httpclient import AsyncHTTPClient def handle_response(response): print(response.body) def asyncronous_visit(): http_client=AsyncHTTPClient() http_client.fetch("http://www.baoidu.com",callback=handle_response)
AsyncHTTPClient는 Tornado의 비동기 액세스 HTTP 클라이언트입니다. 위 코드의 asynchronous_visit() 함수에서 AsyncHTTPClient는 타사 웹 사이트에 비동기적으로 액세스하는 데 사용됩니다. http_client.fetch() 함수는 실제 액세스가 완료될 때까지 기다리지 않고 호출 후 즉시 반환되므로 asynchronous_visit( )도 즉시 실행됩니다. 실제로 해당 URL에 대한 접근이 완료되면 AsyncHTTPClient는 콜백 파라미터에 지정된 함수를 호출하여 접근 결과를 처리할 수 있다.
위 내용은 Python으로 Tornado 동기 및 비동기 I/O 예제 코드 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!