Pythonにはtime.sleepasyncio.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.sleepasyncio.sleepの主な違いは、前者が同期的(ブロッキング)であり、後者が非同期的(ノンブロッキング)であるということです。したがって、asyncio.sleepを使用すると、スリープ中に他のタスクを実行することが可能になります。これにより、Pythonプログラムの効率とパフォーマンスを向上させることができます。

投稿者 admin

コメントを残す

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