Python の Time モジュールを使用して経過時間を測定することは可能ですか? もし可能であれば、どのようにすればよいですか?
カーソルがウィジェット内に一定時間存在した場合にイベントが発生するように、これを実行する必要があります。
ベストアンサー1
start_time = time.time()
# your code
elapsed_time = time.time() - start_time
さまざまな関数の実行時間の測定を簡素化するために、シンプルなデコレータを記述することもできます。
import time
from functools import wraps
PROF_DATA = {}
def profile(fn):
@wraps(fn)
def with_profiling(*args, **kwargs):
start_time = time.time()
ret = fn(*args, **kwargs)
elapsed_time = time.time() - start_time
if fn.__name__ not in PROF_DATA:
PROF_DATA[fn.__name__] = [0, []]
PROF_DATA[fn.__name__][0] += 1
PROF_DATA[fn.__name__][1].append(elapsed_time)
return ret
return with_profiling
def print_prof_data():
for fname, data in PROF_DATA.items():
max_time = max(data[1])
avg_time = sum(data[1]) / len(data[1])
print "Function %s called %d times. " % (fname, data[0]),
print 'Execution time max: %.3f, average: %.3f' % (max_time, avg_time)
def clear_prof_data():
global PROF_DATA
PROF_DATA = {}
使用法:
@profile
def your_function(...):
...
複数の関数を同時にプロファイルできます。測定値を印刷するには、print_prof_data() を呼び出すだけです。