mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-22 11:29:28 +07:00
70 lines
1.8 KiB
Python
70 lines
1.8 KiB
Python
__author__ = 'traff'
|
|
|
|
import threading
|
|
import os
|
|
import tempfile
|
|
from _prof_imports import Stats, FuncStat, Function
|
|
|
|
class ProfDaemonThread(threading.Thread):
|
|
def __init__(self):
|
|
super(ProfDaemonThread, self).__init__()
|
|
self.setDaemon(True)
|
|
self.killReceived = False
|
|
|
|
def run(self):
|
|
self.OnRun()
|
|
|
|
def OnRun(self):
|
|
pass
|
|
|
|
def generate_snapshot_filepath(basepath, local_temp_dir=False):
|
|
if basepath is None:
|
|
basepath = 'snapshot'
|
|
if local_temp_dir:
|
|
basepath = os.path.join(tempfile.gettempdir(), os.path.basename(basepath.replace('\\', '/')))
|
|
|
|
n = 0
|
|
path = basepath + '.pstat'
|
|
while os.path.exists(path):
|
|
n+=1
|
|
path = basepath + (str(n) if n>0 else '') + '.pstat'
|
|
|
|
return path
|
|
|
|
def statsToResponse(stats, m):
|
|
ystats = Stats()
|
|
ystats.func_stats = []
|
|
m.ystats = ystats
|
|
|
|
for func, stat in stats.items():
|
|
path, line, func_name = func
|
|
cc, nc, tt, ct, callers = stat
|
|
func = Function()
|
|
func_stat = FuncStat()
|
|
func.func_stat = func_stat
|
|
ystats.func_stats.append(func)
|
|
|
|
func_stat.file = path
|
|
func_stat.line = line
|
|
func_stat.func_name = func_name
|
|
func_stat.calls_count = nc
|
|
func_stat.total_time = ct
|
|
func_stat.own_time = tt
|
|
|
|
func.callers = []
|
|
for f, s in callers.items():
|
|
caller_stat = FuncStat()
|
|
func.callers.append(caller_stat)
|
|
path, line, func_name = f
|
|
cc, nc, tt, ct = s
|
|
caller_stat.file = path
|
|
caller_stat.line = line
|
|
caller_stat.func_name = func_name
|
|
caller_stat.calls_count = cc
|
|
caller_stat.total_time = ct
|
|
caller_stat.own_time = tt
|
|
|
|
|
|
m.validate()
|
|
|