Pythonにはtime.sleep
とasyncio.sleep
という2つの異なるスリープ関数があります。これらの関数は似ていますが、その動作は大きく異なります。
time.sleep
time.sleep
はPythonの組み込み関数で、指定した秒数だけプログラムの実行を一時停止します。この関数を呼び出すと、その間プログラムは何も他のタスクを実行できません。
import time
def main():
print('Hello ...')
time.sleep(5)
print('... World!')
main()
上記のコードは、5秒間スリープした後に”… World!”を出力します。
asyncio.sleep
一方、asyncio.sleep
は非同期版のスリープ関数で、asyncio
ライブラリの一部です。この関数はコルーチンであり、await
キーワードを使用して呼び出す必要があります。
import asyncio
async def main():
print('Hello ...')
await asyncio.sleep(5)
print('... World!')
asyncio.run(main())
このコードも同様に5秒間スリープした後に”… World!”を出力します。しかし、asyncio.sleep
は非同期であるため、スリープ中に他のタスクを実行することが可能です。
まとめ
time.sleep
とasyncio.sleep
の主な違いは、前者が同期的(ブロッキング)であり、後者が非同期的(ノンブロッキング)であるということです。したがって、asyncio.sleep
を使用すると、スリープ中に他のタスクを実行することが可能になります。これにより、Pythonプログラムの効率とパフォーマンスを向上させることができます。