Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def prof_to_json(prof_name):
"""
Convert profiles stats in a `pstats` compatible file to a JSON string.
Parameters
----------
prof_name : str
Path to to a `pstats` compatible profile.
Returns
-------
json_stats : str
Profile as a JSON string.
"""
loader = pstatsloader.PStatsLoader(prof_name)
d = _stats_to_tree_dict(loader.tree.children[0])
return json.dumps(d, indent=1)
def stats_rows(filename):
"""
Build a list of StatsRow objects that will be used to make the
profile stats table beneath the profile visualization.
Parameters
----------
filename : str
Name of profiling output as made by Python's built-in profilers.
"""
time_fmt = '{0:>12.6g}'
loader = pstatsloader.PStatsLoader(filename)
rows = []
for r in loader.rows.values():
if isinstance(r, pstatsloader.PStatRow):
calls_value = r.recursive
if r.recursive > r.calls:
calls_str = '{0}/{1}'.format(r.recursive, r.calls)
else:
calls_str = str(r.calls)
tottime = r.local
tottime_str = time_fmt.format(tottime)
tottime_percall = r.localPer
tottime_percall_str = time_fmt.format(tottime_percall)
cumtime = r.cummulative
cumtime_str = time_fmt.format(cumtime)
super( PStatLocation, self ).__init__( directory=directory, filename=filename, name='package', tree=tree )
def filter_children( self ):
"""Filter our children into regular and local children sets"""
real_children = []
for child in self.children:
if child.name == '':
self.local_children.append( child )
else:
real_children.append( child )
self.children = real_children
if __name__ == "__main__":
import sys
p = PStatsLoader( sys.argv[1] )
assert p.tree
print(p.tree)