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()を適切に使用することで、プログラムのパフォーマンスと効率を大幅に向上させることが可能です。

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です