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プログラムの効率とパフォーマンスを向上させることができます。