def get(self): _yappi._pause() self.clear() try: _yappi.enum_func_stats(self._enumerator) # convert the children info from tuple to YChildFuncStat for stat in self: _childs = YChildFuncStats() for child_tpl in stat.children: rstat = self[child_tpl[0]] # sometimes even the profile results does not contain the result because of filtering # or timing(call_leave called but call_enter is not), with this we ensure that the children # index always point to a valid stat. if rstat is None: continue tavg = rstat.ttot / rstat.ncall cfstat = YChildFuncStat(child_tpl+(tavg, rstat.builtin, rstat.full_name, rstat.module, rstat.lineno, rstat.name,)) _childs.append(cfstat) stat.children = _childs result = super(YFuncStats, self).get() finally: _yappi._resume() return result
def clear_stats(): """ Clears all of the profile results. """ _yappi._pause() try: _yappi.clear_stats() finally: _yappi._resume()
def get(self): _yappi._pause() self.clear() try: _yappi.enum_thread_stats(self._enumerator) result = super(YThreadStats, self).get() finally: _yappi._resume() return result
def get_thread_stats(): """ Gets the thread profiler results with given filters and returns an iterable. """ _yappi._pause() try: stats = YThreadStats().get() finally: _yappi._resume() return stats
def get_func_stats(): """ Gets the function profiler results with given filters and returns an iterable. """ # multiple invocation pause/resume is allowed. This is needed because # not only get() is executed here. _yappi._pause() try: stats = YFuncStats().get() finally: _yappi._resume() return stats
def get(self): backend = _yappi.get_context_backend() if self._BACKEND != backend: raise YappiError( "Cannot retrieve stats for '%s' when backend is set as '%s'" % (self._BACKEND.lower(), backend.lower())) _yappi._pause() self.clear() try: _yappi.enum_context_stats(self._enumerator) result = super(_YContextStats, self).get() finally: _yappi._resume() return result
def get_func_stats(filter={}): """ Gets the function profiler results with given filters and returns an iterable. """ _VALID_FILTER_KEYS = set(["tag", "name", "module", "ctx_id"]) if len(filter): for filter_key in filter: if filter_key not in _VALID_FILTER_KEYS: warnings.warn('Invalid filter key.(%s)' % (filter_key)) # multiple invocation pause/resume is allowed. This is needed because # not only get() is executed here. _yappi._pause() try: stats = YFuncStats().get(filter=filter) finally: _yappi._resume() return stats
def get(self, filter=None): _yappi._pause() self.clear() try: self._filter = filter _yappi.enum_func_stats(self._enumerator) self._filter = None # convert the children info from tuple to YChildFuncStat for stat in self: _childs = YChildFuncStats() for child_tpl in stat.children: rstat = self[child_tpl[0]] # sometimes even the profile results does not contain the result because of filtering # or timing(call_leave called but call_enter is not), with this we ensure that the children # index always point to a valid stat. if rstat is None: continue tavg = rstat.ttot / rstat.ncall cfstat = YChildFuncStat(child_tpl + ( tavg, rstat.builtin, rstat.full_name, rstat.module, rstat.lineno, rstat.name, )) _childs.append(cfstat) stat.children = _childs result = super(YFuncStats, self).get() finally: _yappi._resume() return result