🙆♀️
【Python】asyncのついた関数をコールする
Pythonを勉強中のGoエンジニアです。
調べたことは記事にしていきますので、参考になれば嬉しいです。
(ChatGPTによる回答が含まれています)
疑問
asyncのついた関数をコールする方法を知りたい。
回答
非同期関数を呼び出すにはいくつかの方法があります。
以下の関数をもとに、コードを見ていきます。
async def hello():
print('Hello ...')
await asyncio.sleep(1)
print('... World!')
await
キーワードを使用する
1. 非同期関数はawaitを前置して呼び出すことができます。
これは非同期関数の実行を一時的に停止し、制御をイベントループに戻します。非同期関数が終了すると、結果を返し、元の関数の実行を再開します。
async def main():
await hello()
asyncio.create_task()
を使用する
2. asyncio.create_task()は新たなタスクを作成し、そのタスクをイベントループにスケジュールします。これにより、非同期関数はすぐに開始され、制御はすぐに呼び出し元の関数に戻ります。
async def main():
task = asyncio.create_task(hello())
await task
asyncio.gather()
を使用する
3. asyncio.gather()
関数は複数の非同期タスクを並行に実行し、すべてのタスクが終了するのを待ちます。これは複数の非同期タスクを扱う場合に便利です。
async def main():
await asyncio.gather(hello(), hello())
以上
Discussion