ayon-core/openpype/lib/profiling.py
2021-04-01 18:54:46 +02:00

29 lines
732 B
Python

# -*- coding: utf-8 -*-
"""Provide profiling decorator."""
import os
import cProfile
def do_profile(fn, to_file=None):
"""Wraps function in profiler run and print stat after it is done.
Args:
to_file (str, optional): If specified, dumps stats into the file
instead of printing.
"""
if to_file:
to_file = to_file.format(pid=os.getpid())
def profiled(*args, **kwargs):
profiler = cProfile.Profile()
try:
profiler.enable()
res = fn(*args, **kwargs)
profiler.disable()
return res
finally:
if to_file:
profiler.dump_stats(to_file)
else:
profiler.print_stats()