


Python 3.5 の asyncio の「await」機能をどのような場合に使用する必要がありますか?また、どのような場合に使用を避けるべきでしょうか?
Asyncio の Python 3.5 の await 機能を使用する場合と回避する場合
Python 3.5 では、asyncio を使用した非同期プログラミングを容易にするために await キーワードが導入されました。ただし、効率を最大化するためにどの操作を待機する必要があるかは必ずしも明確ではありません。
非同期候補の決定
経験則では、I/ を実行する関数を待機することです。 O ネットワークへのアクセスやファイルの読み取りなどの操作。これらの操作により、同期コードが長期間ブロックされる可能性があります。それらを待つことで、asyncio は他の操作を同時に実行できます。
非同期コードの利点
以下のコード スニペットに示されているように、非同期コードは以下の操作を大幅に高速化できます。複数の I/O 呼び出し:
# Synchronous way: download(url1) # takes 5 sec. download(url2) # takes 5 sec. # Total time: 10 sec. # Asynchronous way: await asyncio.gather( async_download(url1), # takes 5 sec. async_download(url2) # takes 5 sec. ) # Total time: only 5 sec. (+ little overhead for using asyncio)
非同期/同期コードが混在する関数
非同期関数は、非同期関数と同期関数の両方を呼び出すことができます。ただし、I/O 操作を実行しない同期コードを待機するメリットはありません。これにより、不要なオーバーヘッドが発生する可能性があります。
async def extract_links(url): # async_download() was created async to get benefit of I/O html = await async_download(url) # parse() doesn't work with I/O, there's no sense to make it async links = parse(html) return links
長時間実行される同期操作を避ける
非同期内で長時間実行される同期操作 (>50 ミリ秒) を回避することが重要です。他のすべての非同期タスクを凍結する可能性があるためです。これらのタスクを効率的に処理するには:
- マルチプロセッシングを使用する: 長時間実行操作を別のプロセスで実行し、結果を待ちます:
executor = ProcessPoolExecutor(2) async def extract_links(url): data = await download(url) links = parse(data) # Now your main process can handle another async functions while separate process running links_found = await loop.run_in_executor(executor, search_in_very_big_file, links)
- ThreadPoolExecutor を使用します: Web サーバーへのリクエストなど、I/O バウンドの同期タスクの場合:
executor = ThreadPoolExecutor(2) async def download(url): response = await loop.run_in_executor(executor, requests.get, url) return response.text
以上がPython 3.5 の asyncio の「await」機能をどのような場合に使用する必要がありますか?また、どのような場合に使用を避けるべきでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

Pythonは、Web開発、データサイエンス、機械学習、自動化、スクリプトの分野で広く使用されています。 1)Web開発では、DjangoおよびFlask Frameworksが開発プロセスを簡素化します。 2)データサイエンスと機械学習の分野では、Numpy、Pandas、Scikit-Learn、Tensorflowライブラリが強力なサポートを提供します。 3)自動化とスクリプトの観点から、Pythonは自動テストやシステム管理などのタスクに適しています。

2時間以内にPythonの基本を学ぶことができます。 1。変数とデータ型を学習します。2。ステートメントやループの場合などのマスター制御構造、3。関数の定義と使用を理解します。これらは、簡単なPythonプログラムの作成を開始するのに役立ちます。

10時間以内にコンピューター初心者プログラミングの基本を教える方法は?コンピューター初心者にプログラミングの知識を教えるのに10時間しかない場合、何を教えることを選びますか...

fiddlereveryversings for the-middleの測定値を使用するときに検出されないようにする方法

Python 3.6のピクルスファイルのロードレポートエラー:modulenotFounderror:nomodulenamed ...

風光明媚なスポットコメント分析におけるJieba Wordセグメンテーションの問題を解決する方法は?風光明媚なスポットコメントと分析を行っているとき、私たちはしばしばJieba Wordセグメンテーションツールを使用してテキストを処理します...

正規表現を使用して、最初の閉じたタグと停止に一致する方法は? HTMLまたは他のマークアップ言語を扱う場合、しばしば正規表現が必要です...

Investing.comの反クラウリング戦略を理解する多くの人々は、Investing.com(https://cn.investing.com/news/latest-news)からのニュースデータをクロールしようとします。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

メモ帳++7.3.1
使いやすく無料のコードエディター

ドリームウィーバー CS6
ビジュアル Web 開発ツール

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ホットトピック



