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 サイトの他の関連記事を参照してください。