ホームページ  >  記事  >  バックエンド開発  >  Tornado の同期および非同期 I/O サンプル コードの Python での説明

Tornado の同期および非同期 I/O サンプル コードの Python での説明

不言
不言転載
2018-10-16 16:07:492136ブラウズ
この記事では、Python による Tornado 同期と非同期 I/O のサンプル コードについて説明します。一定の参考価値があります。必要な友人は参照してください。お役に立てれば幸いです。

Tornado ではコルーチンが推奨されており、シンプルで効率的な非同期処理コードを開発できます。

同期 I/O と非同期 I/O の比較

ご存知のとおり、CPU の動作効率はディスク ストレージよりも高く、ネットワーク リクエストよりも高いため、 CPU のデータ処理効率の低下によるものです。処理がデータ ストレージまたはネットワーク リクエスト (I/O 操作) のペースと一致しません。この場合、同期または非同期 I/O 操作を選択できます。

同期 I/O 操作では、I/O 操作が完了するまでプロセスがブロックされますが、

非同期 I/O 操作では、要求元のプロセスはブロックされません。

Tornado 同期 I/O の簡単なコード例:

コード:

#导入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 は、Tornado の同期アクセス 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() 関数では、サードパーティの Web サイトに非同期にアクセスするために AsyncHTTPClient が使用されます。http_client.fetch() 関数は、実際のアクセスが完了するのを待たずに呼び出し直後に戻り、その結果、asynchronous_visit( )もすぐに実行されます。終了します。実際に URL へのアクセスが完了すると、AsyncHTTPClient はコールバック パラメーターで指定された関数を呼び出し、アクセス結果を処理します。

以上がTornado の同期および非同期 I/O サンプル コードの Python での説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。