Files
openide/python/helpers/profiler/yappi_profiler.py
2024-09-12 10:42:22 +00:00

49 lines
1.2 KiB
Python

import yappi
class YappiProfile(object):
""" Wrapper class that represents Yappi profiling backend with API matching
the cProfile.
"""
def __init__(self):
self.stats = None
yappi.set_clock_type("wall")
def runcall(self, func, *args, **kw):
self.enable()
try:
return func(*args, **kw)
finally:
self.disable()
def enable(self):
yappi.start()
def disable(self):
yappi.stop()
def convert_stats_to_dict(self, stats):
result = []
for stat in stats:
func_dict = {
'filename': stat.module,
'name': stat.name,
'line': stat.lineno,
'calls': stat.ncall,
'total_time': stat.ttot,
'cumulative_time': stat.tsub,
'thread_id': stat.ctx_id
}
result.append(func_dict)
return result
def create_stats(self):
self.stats = yappi.get_func_stats()
def getstats(self):
self.create_stats()
return self.stats
def dump_stats(self, file):
self.getstats().save(file, type="ystat")