>  기사  >  백엔드 개발  >  Python으로 Tornado 동기 및 비동기 I/O 예제 코드 설명

Python으로 Tornado 동기 및 비동기 I/O 예제 코드 설명

不言
不言앞으로
2018-10-16 16:07:492175검색
이 기사는 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는 콜백 파라미터에 지정된 함수를 호출하여 접근 결과를 처리할 수 있다.

위 내용은 Python으로 Tornado 동기 및 비동기 I/O 예제 코드 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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