source: sasview/_modules/sas/guiframe/custom_pstats.html @ a462c6a

gh-pages
Last change on this file since a462c6a was a462c6a, checked in by ajj, 9 years ago

Rebuild to fix index and modules docs

  • Property mode set to 100644
File size: 22.7 KB
Line 
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
4
5<html xmlns="http://www.w3.org/1999/xhtml">
6  <head>
7    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
8   
9    <title>sas.guiframe.custom_pstats &mdash; SasView 3.0.0 documentation</title>
10   
11    <link rel="stylesheet" href="../../../_static/default.css" type="text/css" />
12    <link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
13   
14    <script type="text/javascript">
15      var DOCUMENTATION_OPTIONS = {
16        URL_ROOT:    '../../../',
17        VERSION:     '3.0.0',
18        COLLAPSE_INDEX: false,
19        FILE_SUFFIX: '.html',
20        HAS_SOURCE:  true
21      };
22    </script>
23    <script type="text/javascript" src="../../../_static/jquery.js"></script>
24    <script type="text/javascript" src="../../../_static/underscore.js"></script>
25    <script type="text/javascript" src="../../../_static/doctools.js"></script>
26    <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
27    <link rel="top" title="SasView 3.0.0 documentation" href="../../../index.html" />
28    <link rel="up" title="sas.guiframe" href="../guiframe.html" /> 
29  </head>
30  <body>
31    <div class="related">
32      <h3>Navigation</h3>
33      <ul>
34        <li class="right" style="margin-right: 10px">
35          <a href="../../../genindex.html" title="General Index"
36             accesskey="I">index</a></li>
37        <li class="right" >
38          <a href="../../../py-modindex.html" title="Python Module Index"
39             >modules</a> |</li>
40        <li><a href="../../../index.html">SasView 3.0.0 documentation</a> &raquo;</li>
41          <li><a href="../../index.html" >Module code</a> &raquo;</li>
42          <li><a href="../guiframe.html" accesskey="U">sas.guiframe</a> &raquo;</li> 
43      </ul>
44    </div> 
45
46    <div class="document">
47      <div class="documentwrapper">
48        <div class="bodywrapper">
49          <div class="body">
50           
51  <h1>Source code for sas.guiframe.custom_pstats</h1><div class="highlight"><pre>
52<span class="kn">import</span> <span class="nn">cProfile</span><span class="o">,</span> <span class="nn">pstats</span><span class="o">,</span> <span class="nn">os</span>
53<span class="k">def</span> <span class="nf">func_std_string</span><span class="p">(</span><span class="n">func_name</span><span class="p">):</span> <span class="c"># match what old profile produced</span>
54<div class="viewcode-block" id="func_std_string"><a class="viewcode-back" href="../../../dev/api/sas.guiframe.html#sas.guiframe.custom_pstats.func_std_string">[docs]</a>    <span class="k">if</span> <span class="n">func_name</span><span class="p">[:</span><span class="mi">2</span><span class="p">]</span> <span class="o">==</span> <span class="p">(</span><span class="s">&#39;~&#39;</span><span class="p">,</span> <span class="mi">0</span><span class="p">):</span>
55        <span class="c"># special case for built-in functions</span>
56        <span class="n">name</span> <span class="o">=</span> <span class="n">func_name</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span>
57        <span class="k">if</span> <span class="n">name</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s">&#39;&lt;&#39;</span><span class="p">)</span> <span class="ow">and</span> <span class="n">name</span><span class="o">.</span><span class="n">endswith</span><span class="p">(</span><span class="s">&#39;&gt;&#39;</span><span class="p">):</span>
58            <span class="k">return</span> <span class="s">&#39;{</span><span class="si">%s</span><span class="s">}&#39;</span> <span class="o">%</span> <span class="n">name</span><span class="p">[</span><span class="mi">1</span><span class="p">:</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
59        <span class="k">else</span><span class="p">:</span>
60            <span class="k">return</span> <span class="n">name</span>
61    <span class="k">else</span><span class="p">:</span>
62        <span class="k">return</span> <span class="s">&quot;</span><span class="si">%s</span><span class="s">:</span><span class="si">%d</span><span class="s">(</span><span class="si">%s</span><span class="s">)&quot;</span> <span class="o">%</span> <span class="n">func_name</span>
63
64<span class="k">def</span> <span class="nf">f8</span><span class="p">(</span><span class="n">x</span><span class="p">):</span></div>
65<div class="viewcode-block" id="f8"><a class="viewcode-back" href="../../../dev/api/sas.guiframe.html#sas.guiframe.custom_pstats.f8">[docs]</a>    <span class="k">return</span> <span class="s">&quot;</span><span class="si">%8.3f</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">x</span>
66
67<span class="k">class</span> <span class="nc">CustomPstats</span><span class="p">(</span><span class="n">pstats</span><span class="o">.</span><span class="n">Stats</span><span class="p">):</span></div>
68<div class="viewcode-block" id="CustomPstats"><a class="viewcode-back" href="../../../dev/api/sas.guiframe.html#sas.guiframe.custom_pstats.CustomPstats">[docs]</a>    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwds</span><span class="p">):</span>
69        <span class="n">pstats</span><span class="o">.</span><span class="n">Stats</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwds</span><span class="p">)</span>
70       
71    <span class="k">def</span> <span class="nf">write_stats</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">amount</span><span class="p">):</span>
72<div class="viewcode-block" id="CustomPstats.write_stats"><a class="viewcode-back" href="../../../dev/api/sas.guiframe.html#sas.guiframe.custom_pstats.CustomPstats.write_stats">[docs]</a>        <span class="n">msg</span> <span class="o">=</span> <span class="s">&#39;&#39;</span>
73        <span class="k">for</span> <span class="n">filename</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">files</span><span class="p">:</span>
74            <span class="n">msg</span> <span class="o">+=</span>  <span class="nb">str</span><span class="p">(</span><span class="n">filename</span><span class="p">)</span> <span class="o">+</span> <span class="s">&#39;</span><span class="se">\n</span><span class="s">&#39;</span>
75        <span class="c">#if self.files: msg += str(self.stream) + &#39;\n&#39;</span>
76        <span class="n">indent</span> <span class="o">=</span> <span class="s">&#39; &#39;</span> <span class="o">*</span> <span class="mi">8</span>
77        <span class="k">for</span> <span class="n">func</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">top_level</span><span class="p">:</span>
78            <span class="n">msg</span> <span class="o">+=</span>   <span class="nb">str</span><span class="p">(</span><span class="n">indent</span><span class="p">)</span><span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">func_get_function_name</span><span class="p">(</span><span class="n">func</span><span class="p">))</span><span class="o">+</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span>
79
80        <span class="n">msg</span> <span class="o">+=</span> <span class="nb">str</span><span class="p">(</span><span class="n">indent</span><span class="p">)</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">total_calls</span><span class="p">)</span><span class="o">+</span> <span class="s">&quot;function calls&quot;</span> <span class="o">+</span> <span class="s">&#39;</span><span class="se">\n</span><span class="s">&#39;</span>
81        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">total_calls</span> <span class="o">!=</span> <span class="bp">self</span><span class="o">.</span><span class="n">prim_calls</span><span class="p">:</span>
82            <span class="n">msg</span> <span class="o">+=</span>  <span class="s">&quot;(</span><span class="si">%d</span><span class="s"> primitive calls)&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">prim_calls</span> <span class="o">+</span> <span class="s">&#39;</span><span class="se">\n</span><span class="s">&#39;</span>
83        <span class="n">msg</span> <span class="o">+=</span>  <span class="s">&quot;in </span><span class="si">%.3f</span><span class="s"> CPU seconds&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">total_tt</span> <span class="o">+</span> <span class="s">&#39;</span><span class="se">\n</span><span class="s">&#39;</span>
84        <span class="c">#msg +=  str(self.stream) + &#39;\n&#39;</span>
85       
86        <span class="n">width</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">max_name_len</span>
87        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">fcn_list</span><span class="p">:</span>
88            <span class="nb">list</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">fcn_list</span><span class="p">[:]</span>
89            <span class="n">temp_msg</span> <span class="o">=</span> <span class="s">&quot;   Ordered by: &quot;</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">sort_type</span> <span class="o">+</span> <span class="s">&#39;</span><span class="se">\n</span><span class="s">&#39;</span>
90        <span class="k">else</span><span class="p">:</span>
91            <span class="nb">list</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">stats</span><span class="o">.</span><span class="n">keys</span><span class="p">()</span>
92            <span class="n">temp_msg</span> <span class="o">=</span> <span class="s">&quot;   Random listing order was used</span><span class="se">\n</span><span class="s">&quot;</span>
93
94        <span class="k">for</span> <span class="n">selection</span> <span class="ow">in</span> <span class="n">amount</span><span class="p">:</span>
95            <span class="nb">list</span><span class="p">,</span> <span class="n">temp_msg</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">eval_print_amount</span><span class="p">(</span><span class="n">selection</span><span class="p">,</span> <span class="nb">list</span><span class="p">,</span> <span class="n">temp_msg</span><span class="p">)</span>
96
97        <span class="n">count</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="nb">list</span><span class="p">)</span>
98
99        <span class="k">if</span> <span class="ow">not</span> <span class="nb">list</span><span class="p">:</span>
100            <span class="n">width</span><span class="p">,</span> <span class="nb">list</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">list</span>
101        <span class="k">else</span><span class="p">:</span>
102            <span class="n">msg</span> <span class="o">+=</span>   <span class="nb">str</span><span class="p">(</span><span class="n">temp_msg</span><span class="p">)</span> <span class="o">+</span> <span class="s">&#39;</span><span class="se">\n</span><span class="s">&#39;</span>
103            <span class="k">if</span> <span class="n">count</span> <span class="o">&lt;</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">stats</span><span class="p">):</span>
104                <span class="n">width</span> <span class="o">=</span> <span class="mi">0</span>
105                <span class="k">for</span> <span class="n">func</span> <span class="ow">in</span> <span class="nb">list</span><span class="p">:</span>
106                    <span class="k">if</span>  <span class="nb">len</span><span class="p">(</span><span class="n">func_std_string</span><span class="p">(</span><span class="n">func</span><span class="p">))</span> <span class="o">&gt;</span> <span class="n">width</span><span class="p">:</span>
107                        <span class="n">width</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">func_std_string</span><span class="p">(</span><span class="n">func</span><span class="p">))</span>
108       
109            <span class="n">width</span><span class="p">,</span> <span class="nb">list</span> <span class="o">=</span> <span class="n">width</span><span class="o">+</span><span class="mi">2</span><span class="p">,</span> <span class="nb">list</span>
110        <span class="k">if</span> <span class="nb">list</span><span class="p">:</span>
111            <span class="n">msg</span> <span class="o">+=</span> <span class="s">&#39;   ncalls  tottime  percall  cumtime  percall&#39;</span>
112            <span class="n">msg</span> <span class="o">+=</span>  <span class="s">&#39; filename:lineno(function)&#39;</span> <span class="o">+</span> <span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span>
113            <span class="k">for</span> <span class="n">func</span> <span class="ow">in</span> <span class="nb">list</span><span class="p">:</span>
114                <span class="n">cc</span><span class="p">,</span> <span class="n">nc</span><span class="p">,</span> <span class="n">tt</span><span class="p">,</span> <span class="n">ct</span><span class="p">,</span> <span class="n">callers</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">stats</span><span class="p">[</span><span class="n">func</span><span class="p">]</span>
115                <span class="n">c</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">nc</span><span class="p">)</span>
116                <span class="k">if</span> <span class="n">nc</span> <span class="o">!=</span> <span class="n">cc</span><span class="p">:</span>
117                    <span class="n">c</span> <span class="o">=</span> <span class="n">c</span> <span class="o">+</span> <span class="s">&#39;/&#39;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">cc</span><span class="p">)</span>
118                <span class="n">msg</span> <span class="o">+=</span>  <span class="nb">str</span><span class="p">(</span> <span class="n">c</span><span class="o">.</span><span class="n">rjust</span><span class="p">(</span><span class="mi">9</span><span class="p">))</span> 
119                <span class="n">msg</span> <span class="o">+=</span>  <span class="nb">str</span><span class="p">(</span><span class="n">f8</span><span class="p">(</span><span class="n">tt</span><span class="p">))</span> 
120                <span class="k">if</span> <span class="n">nc</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
121                    <span class="n">msg</span> <span class="o">+=</span> <span class="nb">str</span><span class="p">(</span><span class="s">&#39; &#39;</span><span class="o">*</span><span class="mi">8</span><span class="p">)</span> 
122                <span class="k">else</span><span class="p">:</span>
123                    <span class="n">msg</span> <span class="o">+=</span>  <span class="nb">str</span><span class="p">(</span><span class="n">f8</span><span class="p">(</span><span class="n">tt</span><span class="o">/</span><span class="n">nc</span><span class="p">))</span> 
124                <span class="n">msg</span> <span class="o">+=</span> <span class="nb">str</span><span class="p">(</span><span class="n">f8</span><span class="p">(</span><span class="n">ct</span><span class="p">))</span> 
125                <span class="k">if</span> <span class="n">cc</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
126                    <span class="n">msg</span> <span class="o">+=</span> <span class="nb">str</span><span class="p">(</span> <span class="s">&#39; &#39;</span><span class="o">*</span><span class="mi">80</span><span class="p">)</span> 
127                <span class="k">else</span><span class="p">:</span>
128                    <span class="n">msg</span> <span class="o">+=</span> <span class="nb">str</span><span class="p">(</span><span class="n">f8</span><span class="p">(</span><span class="n">ct</span><span class="o">/</span><span class="n">cc</span><span class="p">))</span> 
129                <span class="n">msg</span> <span class="o">+=</span>  <span class="s">&quot; &quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">func_std_string</span><span class="p">(</span><span class="n">func</span><span class="p">))</span> <span class="o">+</span> <span class="s">&#39;</span><span class="se">\n</span><span class="s">&#39;</span>
130            <span class="n">msg</span> <span class="o">+=</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">stream</span><span class="p">)</span> <span class="o">+</span> <span class="s">&#39;</span><span class="se">\n</span><span class="s">&#39;</span>
131            <span class="c">#msg += str(self.stream) + &#39;\n&#39;</span>
132        <span class="k">return</span> <span class="bp">self</span><span class="p">,</span> <span class="n">msg</span>
133           
134<span class="k">def</span> <span class="nf">profile</span><span class="p">(</span> <span class="n">fn</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="s">&#39;profile.txt&#39;</span><span class="p">,</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kw</span><span class="p">):</span></div></div>
135<div class="viewcode-block" id="profile"><a class="viewcode-back" href="../../../dev/api/sas.guiframe.html#sas.guiframe.custom_pstats.profile">[docs]</a>    <span class="kn">import</span> <span class="nn">cProfile</span><span class="o">,</span> <span class="nn">pstats</span><span class="o">,</span> <span class="nn">os</span>
136    <span class="k">global</span> <span class="n">call_result</span>
137    <span class="k">def</span> <span class="nf">call</span><span class="p">():</span>
138        <span class="k">global</span> <span class="n">call_result</span>
139        <span class="n">call_result</span> <span class="o">=</span> <span class="n">fn</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kw</span><span class="p">)</span>
140    <span class="n">cProfile</span><span class="o">.</span><span class="n">runctx</span><span class="p">(</span><span class="s">&#39;call()&#39;</span><span class="p">,</span> <span class="nb">dict</span><span class="p">(</span><span class="n">call</span><span class="o">=</span><span class="n">call</span><span class="p">),</span> <span class="p">{},</span> <span class="s">&#39;profile.txt&#39;</span><span class="p">)</span>
141    <span class="n">stats</span> <span class="o">=</span> <span class="n">CustomPstats</span><span class="p">(</span><span class="s">&#39;profile.txt&#39;</span><span class="p">)</span>
142    <span class="c">#sort by cumlative time</span>
143    <span class="n">stats</span><span class="o">.</span><span class="n">sort_stats</span><span class="p">(</span><span class="s">&#39;time&#39;</span><span class="p">)</span>
144    <span class="n">stats</span><span class="o">.</span><span class="n">print_stats</span><span class="p">(</span><span class="mi">50</span><span class="p">)</span>
145    <span class="sd">&quot;&quot;&quot;</span>
146<span class="sd">        filename = &#39;profile_cum_&#39; + name</span>
147<span class="sd">        _, msg = stats.write_stats(50)</span>
148<span class="sd">        f = file(filename, &#39;wb&#39;)</span>
149<span class="sd">        f.write(msg)</span>
150<span class="sd">        f.close()</span>
151<span class="sd">        #sort by time</span>
152<span class="sd">        stats.sort_stats(&#39;time&#39;)</span>
153<span class="sd">        _, msg = stats.write_stats(50)</span>
154<span class="sd">        filename = &#39;profile_time_&#39; + name</span>
155<span class="sd">        f = file(filename, &#39;wb&#39;)</span>
156<span class="sd">        f.write(msg)</span>
157<span class="sd">        f.close()</span>
158<span class="sd">        # sort by number of calls</span>
159<span class="sd">        stats.sort_stats(&#39;call&#39;)</span>
160<span class="sd">        _, msg = stats.write_stats(50)</span>
161<span class="sd">        filename = &#39;profile_call_&#39; + name</span>
162<span class="sd">        f = file(filename, &#39;wb&#39;)</span>
163<span class="sd">        f.write(msg)</span>
164<span class="sd">        f.close()</span>
165<span class="sd">        os.unlink(&#39;profile.txt&#39;)</span>
166<span class="sd">    &quot;&quot;&quot;</span>
167    <span class="k">return</span> <span class="n">call_result</span>
168</pre></div></div>
169
170          </div>
171        </div>
172      </div>
173      <div class="sphinxsidebar">
174        <div class="sphinxsidebarwrapper">
175<div id="searchbox" style="display: none">
176  <h3>Quick search</h3>
177    <form class="search" action="../../../search.html" method="get">
178      <input type="text" name="q" />
179      <input type="submit" value="Go" />
180      <input type="hidden" name="check_keywords" value="yes" />
181      <input type="hidden" name="area" value="default" />
182    </form>
183    <p class="searchtip" style="font-size: 90%">
184    Enter search terms or a module, class or function name.
185    </p>
186</div>
187<script type="text/javascript">$('#searchbox').show(0);</script>
188        </div>
189      </div>
190      <div class="clearer"></div>
191    </div>
192    <div class="related">
193      <h3>Navigation</h3>
194      <ul>
195        <li class="right" style="margin-right: 10px">
196          <a href="../../../genindex.html" title="General Index"
197             >index</a></li>
198        <li class="right" >
199          <a href="../../../py-modindex.html" title="Python Module Index"
200             >modules</a> |</li>
201        <li><a href="../../../index.html">SasView 3.0.0 documentation</a> &raquo;</li>
202          <li><a href="../../index.html" >Module code</a> &raquo;</li>
203          <li><a href="../guiframe.html" >sas.guiframe</a> &raquo;</li> 
204      </ul>
205    </div>
206    <div class="footer">
207        &copy; Copyright 2013, The SasView Project.
208      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.3.
209    </div>
210  </body>
211</html>
Note: See TracBrowser for help on using the repository browser.