profile-old.html

来自「一本很好的python的说明书,适合对python感兴趣的人」· HTML 代码 · 共 134 行

HTML
134
字号
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>10.8.1 OldProfile Class </title>
<META NAME="description" CONTENT="10.8.1 OldProfile Class ">
<META NAME="keywords" CONTENT="lib">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="STYLESHEET" href="lib.css" tppabs="http://www.python.org/doc/current/lib/lib.css">
<LINK REL="next" href="profile-HotProfile.html" tppabs="http://www.python.org/doc/current/lib/profile-HotProfile.html">
<LINK REL="previous" href="Profiler_Extensions.html" tppabs="http://www.python.org/doc/current/lib/Profiler_Extensions.html">
<LINK REL="up" href="Profiler_Extensions.html" tppabs="http://www.python.org/doc/current/lib/Profiler_Extensions.html">
<LINK REL="next" href="profile-HotProfile.html" tppabs="http://www.python.org/doc/current/lib/profile-HotProfile.html">
</head>
<body>
<DIV CLASS="navigation"><table align="center" width="100%" cellpadding="0" cellspacing="2">
<tr>
<td><A href="Profiler_Extensions.html" tppabs="http://www.python.org/doc/current/lib/Profiler_Extensions.html"><img src="previous.gif" tppabs="http://www.python.org/doc/current/icons/previous.gif" border="0" height="32"
  alt="Previous Page" width="32"></A></td>
<td><A href="Profiler_Extensions.html" tppabs="http://www.python.org/doc/current/lib/Profiler_Extensions.html"><img src="up.gif" tppabs="http://www.python.org/doc/current/icons/up.gif" border="0" height="32"
  alt="Up One Level" width="32"></A></td>
<td><A href="profile-HotProfile.html" tppabs="http://www.python.org/doc/current/lib/profile-HotProfile.html"><img src="next.gif" tppabs="http://www.python.org/doc/current/icons/next.gif" border="0" height="32"
  alt="Next Page" width="32"></A></td>
<td align="center" width="100%">Python Library Reference</td>
<td><A href="contents.html" tppabs="http://www.python.org/doc/current/lib/contents.html"><img src="contents.gif" tppabs="http://www.python.org/doc/current/icons/contents.gif" border="0" height="32"
  alt="Contents" width="32"></A></td>
<td><a href="modindex.html" tppabs="http://www.python.org/doc/current/lib/modindex.html" title="Module Index"><img src="modules.gif" tppabs="http://www.python.org/doc/current/icons/modules.gif" border="0" height="32"
  alt="Module Index" width="32"></a></td>
<td><A href="genindex.html" tppabs="http://www.python.org/doc/current/lib/genindex.html"><img src="index.gif" tppabs="http://www.python.org/doc/current/icons/index.gif" border="0" height="32"
  alt="Index" width="32"></A></td>
</tr></table>
<b class="navlabel">Previous:</b> <a class="sectref" href="Profiler_Extensions.html" tppabs="http://www.python.org/doc/current/lib/Profiler_Extensions.html">10.8 Extensions  </A>
<b class="navlabel">Up:</b> <a class="sectref" href="Profiler_Extensions.html" tppabs="http://www.python.org/doc/current/lib/Profiler_Extensions.html">10.8 Extensions  </A>
<b class="navlabel">Next:</b> <a class="sectref" href="profile-HotProfile.html" tppabs="http://www.python.org/doc/current/lib/profile-HotProfile.html">10.8.2 HotProfile Class</A>
<br><hr></DIV>
<!--End of Navigation Panel-->

<H2>
<BR>
10.8.1 OldProfile Class 
</H2>

<P>
The following derived profiler simulates the old style profiler,
providing errant results on recursive functions. The reason for the
usefulness of this profiler is that it runs faster (i.e., less
overhead) than the old profiler.  It still creates all the caller
stats, and is quite useful when there is <i>no</i> recursion in the
user's code.  It is also a lot more accurate than the old profiler, as
it does not charge all its overhead time to the user's code.

<P>
<dl><dd><pre class="verbatim">
class OldProfile(Profile):

    def trace_dispatch_exception(self, frame, t):
        rt, rtt, rct, rfn, rframe, rcur = self.cur
        if rcur and not rframe is frame:
            return self.trace_dispatch_return(rframe, t)
        return 0

    def trace_dispatch_call(self, frame, t):
        fn = `frame.f_code`
        
        self.cur = (t, 0, 0, fn, frame, self.cur)
        if self.timings.has_key(fn):
            tt, ct, callers = self.timings[fn]
            self.timings[fn] = tt, ct, callers
        else:
            self.timings[fn] = 0, 0, {}
        return 1

    def trace_dispatch_return(self, frame, t):
        rt, rtt, rct, rfn, frame, rcur = self.cur
        rtt = rtt + t
        sft = rtt + rct

        pt, ptt, pct, pfn, pframe, pcur = rcur
        self.cur = pt, ptt+rt, pct+sft, pfn, pframe, pcur

        tt, ct, callers = self.timings[rfn]
        if callers.has_key(pfn):
            callers[pfn] = callers[pfn] + 1
        else:
            callers[pfn] = 1
        self.timings[rfn] = tt+rtt, ct + sft, callers

        return 1


    def snapshot_stats(self):
        self.stats = {}
        for func in self.timings.keys():
            tt, ct, callers = self.timings[func]
            nor_func = self.func_normalize(func)
            nor_callers = {}
            nc = 0
            for func_caller in callers.keys():
                nor_callers[self.func_normalize(func_caller)] = \
                    callers[func_caller]
                nc = nc + callers[func_caller]
            self.stats[nor_func] = nc, nc, tt, ct, nor_callers
</pre></dl>

<P>

<DIV CLASS="navigation"><p><hr><table align="center" width="100%" cellpadding="0" cellspacing="2">
<tr>
<td><A href="Profiler_Extensions.html" tppabs="http://www.python.org/doc/current/lib/Profiler_Extensions.html"><img src="previous.gif" tppabs="http://www.python.org/doc/current/icons/previous.gif" border="0" height="32"
  alt="Previous Page" width="32"></A></td>
<td><A href="Profiler_Extensions.html" tppabs="http://www.python.org/doc/current/lib/Profiler_Extensions.html"><img src="up.gif" tppabs="http://www.python.org/doc/current/icons/up.gif" border="0" height="32"
  alt="Up One Level" width="32"></A></td>
<td><A href="profile-HotProfile.html" tppabs="http://www.python.org/doc/current/lib/profile-HotProfile.html"><img src="next.gif" tppabs="http://www.python.org/doc/current/icons/next.gif" border="0" height="32"
  alt="Next Page" width="32"></A></td>
<td align="center" width="100%">Python Library Reference</td>
<td><A href="contents.html" tppabs="http://www.python.org/doc/current/lib/contents.html"><img src="contents.gif" tppabs="http://www.python.org/doc/current/icons/contents.gif" border="0" height="32"
  alt="Contents" width="32"></A></td>
<td><a href="modindex.html" tppabs="http://www.python.org/doc/current/lib/modindex.html" title="Module Index"><img src="modules.gif" tppabs="http://www.python.org/doc/current/icons/modules.gif" border="0" height="32"
  alt="Module Index" width="32"></a></td>
<td><A href="genindex.html" tppabs="http://www.python.org/doc/current/lib/genindex.html"><img src="index.gif" tppabs="http://www.python.org/doc/current/icons/index.gif" border="0" height="32"
  alt="Index" width="32"></A></td>
</tr></table>
<b class="navlabel">Previous:</b> <a class="sectref" href="Profiler_Extensions.html" tppabs="http://www.python.org/doc/current/lib/Profiler_Extensions.html">10.8 Extensions  </A>
<b class="navlabel">Up:</b> <a class="sectref" href="Profiler_Extensions.html" tppabs="http://www.python.org/doc/current/lib/Profiler_Extensions.html">10.8 Extensions  </A>
<b class="navlabel">Next:</b> <a class="sectref" href="profile-HotProfile.html" tppabs="http://www.python.org/doc/current/lib/profile-HotProfile.html">10.8.2 HotProfile Class</A>
</DIV>
<!--End of Navigation Panel-->
<ADDRESS>
<hr>See <i><a href="about.html" tppabs="http://www.python.org/doc/current/lib/about.html">About this document...</a></i> for information on suggesting changes.
</ADDRESS>
</BODY>
</HTML>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?