Pythonでは、プログラムの実行を一時停止するためにtime.sleep()
とasyncio.sleep()
の2つの関数が提供されています。これらの関数は同じ目的を持っていますが、その動作は大きく異なります。
time.sleepとは
time.sleep()
は、指定した秒数だけプログラムの実行をブロック(停止)します。この関数を呼び出すと、スクリプト全体の実行が一時停止し、何も実行されません。
import time
def main():
print('Hello ...')
time.sleep(5)
print('... World!')
main()
上記のコードでは、time.sleep(5)
が呼び出されると、プログラムは5秒間停止し、その間に他の処理は一切行われません。
asyncio.sleepとは
一方、asyncio.sleep()
は非同期のスリープ関数で、指定した秒数だけコルーチンの実行を一時停止します。この関数をawait
とともに呼び出すと、イベントループに対して「このコルーチンは一時停止しますが、他のコルーチンを実行してください」と指示します。
import asyncio
async def main():
print('Hello ...')
await asyncio.sleep(5)
print('... World!')
asyncio.run(main())
上記のコードでは、await asyncio.sleep(5)
が呼び出されると、main
コルーチンは5秒間一時停止しますが、その間に他のコルーチンが実行される可能性があります。
まとめ
time.sleep()
とasyncio.sleep()
は、どちらもプログラムの実行を一時停止するための関数ですが、その動作は大きく異なります。time.sleep()
は同期的に動作し、プログラム全体を一時停止します。一方、asyncio.sleep()
は非同期的に動作し、特定のコルーチンのみを一時停止します。これにより、asyncio.sleep()
を適切に使用することで、プログラムのパフォーマンスと効率を大幅に向上させることが可能です。