start_time = time.time()# your preelapsed_time = time.time() - start_time
您还可以编写简单的装饰器来简化各种功能的执行时间的度量:
import timefrom functools import wrapsPROF_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_profilingdef 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 = {}用法:
@profiledef your_function(...): ...
您可以同时分析多个功能。然后要打印测量值,只需调用print_prof_data():



