>  기사  >  백엔드 개발  >  Tornado의 Python 동기 및 비동기 I/O 소개(예제 포함)

Tornado의 Python 동기 및 비동기 I/O 소개(예제 포함)

不言
不言앞으로
2018-10-11 14:45:512189검색

이 기사는 Python에서 Tornado의 동기 및 비동기 I/O를 소개합니다(예제 포함). 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.

코루틴은 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는 콜백 파라미터에 지정된 함수를 호출하여 접근 결과를 처리할 수 있다.

위 내용은 Tornado의 Python 동기 및 비동기 I/O 소개(예제 포함)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제