1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

関数の実行時間を計測するコードを短くする。

Posted at

0. 既存の方法

import time


def sync_func():
    for i in range(10):
        time.sleep(0.5)
        print(i)

start = time.time()
sync_func()
end=time.time()

print(end-start)
result
0
1
2
3
4
5
6
7
8
9
5.009452819824219

1. 提案の方法

Pythonには、デコレータという機能があり、関数の前後に特定の処理を追加できます。これを使用して、関数の実行時間を計測するデコレータを定義することができます。

import time


def timer(func):
    def wrapper(*args, **kwargs):
        start_time = time.time()
        result = func(*args, **kwargs)
        end_time = time.time()
        print("Elapsed time: ", end_time - start_time, "seconds")
        return result
    return wrapper

@timer
def sync_func():
    for i in range(10):
        time.sleep(0.5)
        print(i)


sync_func()

result
0
1
2
3
4
5
6
7
8
9
Elapsed time:  5.0100860595703125 seconds

この例では、timerデコレータを定義し、my_function()関数に適用しています。timerデコレータは、wrapper関数を返します。wrapper関数は、my_function()関数を実行する前に開始時間を取得し、関数の実行が完了した後に終了時間を取得し、経過時間を表示します。最後に、wrapper関数はmy_function()関数の戻り値を返します。

デコレータを使用することで、関数を実行するたびに計測するコードを書く必要がなくなり、コードも短くなります。ただし、デコレータを理解していない人にとっては、読みやすさが低下する可能性があります。

1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?