Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ 非同期プログラミングの理解 | Asynchronous Programming
Python構造化プログラミング

非同期プログラミングの理解

メニューを表示するにはスワイプしてください

Asynchronous programmingは、各タスクが完了するのを待たずに、複数のタスクを同時に処理できるようにプログラムを書く方法です。これは、ファイルの読み込み、ネットワークリクエスト、データベースとのやり取りなど、待機時間の多いタスクに特に有用です。タスクの完了を待つ間にプログラムを停止させるのではなく、非同期プログラミングでは他のタスクを継続して実行できます。

Pythonの非同期プログラミングモデルの中心となるのがイベントループです。イベントループは、実行可能なタスクの管理とスケジューリングを担当します。すべてのタスクを追跡し、どのタスクが何か(入力やタイマーなど)を待っているかを確認し、実行可能なものを動かします。これにより、複数のスレッドやプロセスを使わずに、複数のタスクを同時に進行させることができます。

Pythonの非同期プログラミングの重要な構成要素がコルーチンです。コルーチンはasync defで定義される特別な関数で、awaitキーワードを使って実行を一時停止し、その間にイベントループが他のタスクを実行できるようにします。待機していた操作が完了すると、イベントループはコルーチンの中断した場所から再開します。

イベントループとコルーチンを活用することで、特にI/Oバウンドなプログラムにおいて効率的かつ応答性の高いコードを書くことができます。このアプローチは、従来のスレッドやマルチプロセッシングとは異なり、複数のスレッドやプロセスを生成するオーバーヘッドを避け、イベントループが各タスクの実行タイミングを管理します。

import asyncio

async def greet_after_delay():
    print("Hello...")
    await asyncio.sleep(2)  # Pause here, let event loop run other tasks
    print("...world!")

# To actually run the coroutine, you need to use the event loop:
asyncio.run(greet_after_delay())

出力:

Hello...
...world!
question mark

Pythonの非同期プログラミングにおけるイベントループの役割として最も適切な説明はどれですか?

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 4.  1

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 4.  1
some-alt