Pythonの非同期処理は、時間のかかる計算を実行してその結果を得たいときに非常に便利です。通常、そのような処理は関数にまとめ、その関数を実行したときの返り値として結果を得ます。これを同期処理といいます。
一方、同期処理とは異なる概念として非同期処理というものがあります。非同期処理では、Futureというオブジェクトを介して、計算を要求する処理(receiver)と実際の計算を行う処理(sender)の間でやり取りを行います。
以下に、非同期処理の基本的な流れを示します:
- (receiver)
Futureオブジェクトを生成する。 - (receiver) 何らかの手段を用いてreceiverを実行する。
- (sender) 時間のかかる計算を行い、計算結果を、receiverが生成した
Futureオブジェクトに書き込む。 - (receiver)
Futureオブジェクトを確認し、計算結果が格納されていれば計算結果を取得する。
Pythonのasyncioモジュールは、この非同期処理を簡単に実装するためのツールを提供しています。asyncioを使用すると、JavaScriptのasync/awaitのような非同期処理を実現できます。
以下に、asyncioを使用した非同期処理の基本的なコードを示します:
import asyncio
async def main():
print('Hello ...')
await asyncio.sleep(1)
print('... World!')
# Python 3.7+
asyncio.run(main())
このコードでは、main関数内でasyncio.sleep(1)を呼び出しています。このsleep関数は非同期に一定時間待つ関数で、awaitキーワードを使用して非同期処理を実行しています。
以上がPythonの非同期処理とasync/awaitの基本的な使い方になります。これを理解することで、Pythonで時間のかかる処理を効率的に実行することができます。