Changeset 345

Show
Ignore:
Timestamp:
06/21/08 21:57:45 (4 years ago)
Author:
simon
Message:

Slides used in talk.

Location:
hodgestar/Talks/PythonObjects/html
Files:
11 modified

Legend:

Unmodified
Added
Removed
  • hodgestar/Talks/PythonObjects/html/pyobjects-0.html

    r340 r345  
    11<html> 
    22<head> 
    3 <title>Everything You Didn't Want to Known About Python Objects</title> 
     3<title>Everything You Didn't Want to Know about Python Objects</title> 
    44<link rel="stylesheet" type="text/css" href="main.css" /> 
    55<link rel="stylesheet" type="text/css" href="pygment.css" /> 
    66</head> 
    77<body> 
    8 <h2>Everything You Didn't Want to Known About Python Objects</h2> 
     8<h2>Everything You Didn't Want to Know about Python Objects</h2> 
    99<ol> 
    10 <li><a href='pyobjects-1.html'>Everything You Didn't Want to Known About Python Objects</a></li> 
     10<li><a href='pyobjects-1.html'>Everything You Didn't Want to Know about Python Objects</a></li> 
    1111<li><a href='pyobjects-2.html'>Out With The Old ...</a></li> 
    1212<li><a href='pyobjects-3.html'>Gambolling With Slots</a></li> 
    13 <li><a href='pyobjects-4.html'>Strings</a></li> 
    14 <li><a href='pyobjects-5.html'>Find Big Dict</a></li> 
    15 <li><a href='pyobjects-6.html'>Ints</a></li> 
    16 <li><a href='pyobjects-7.html'>Int (speed)</a></li> 
    17 <li><a href='pyobjects-8.html'>Floats</a></li> 
    18 <li><a href='pyobjects-9.html'>PyObject C API</a></li> 
    19 <li><a href='pyobjects-10.html'>object.c</a></li> 
    20 <li><a href='pyobjects-11.html'>New Python Documents - ZOMG!</a></li> 
     13<li><a href='pyobjects-4.html'>object.c</a></li> 
     14<li><a href='pyobjects-5.html'>Strings</a></li> 
     15<li><a href='pyobjects-6.html'>Find Big Dict</a></li> 
     16<li><a href='pyobjects-7.html'>Ints</a></li> 
     17<li><a href='pyobjects-8.html'>Int (speed)</a></li> 
     18<li><a href='pyobjects-9.html'>Floats</a></li> 
     19<li><a href='pyobjects-10.html'>C API Documentation</a></li> 
    2120</ol> 
    2221<br /></body></html> 
  • hodgestar/Talks/PythonObjects/html/pyobjects-1.html

    r330 r345  
    11<html> 
    22<head> 
    3 <title>Everything You Didn't Want to Known About Python Objects</title> 
     3<title>Everything You Didn't Want to Know about Python Objects</title> 
    44<link rel="stylesheet" type="text/css" href="main.css" /> 
    55<link rel="stylesheet" type="text/css" href="pygment.css" /> 
    66</head> 
    77<body> 
    8 Prev | <a href="pyobjects-0.html">Index</a> | <a acesskey="N" href="pyobjects-2.html">Next</a><h1><center>Everything You Didn't Want to Known About Python Objects</center></h1><center><li>in which I chronicle my recent findings in the depths of Object/object.c</li> 
    9 </center><br /><div class="footer"><hr />Everything You Didn't Want to Known About Python Objects</div></body></html> 
     8<div style='margin: auto; width: 50%;'><h1>Everything You Didn't Want to Know about Python Objects</h1><ul style='list-style-type: none;'> 
     9<li>in which I chronicle my recent findings in the depths of Object/object.c</li> 
     10</ul> 
     11</div>Prev | <a href="pyobjects-0.html">Index</a> | <a accesskey="K" href="pyobjects-2.html">Next</a><br /><div class="footer" style="font-style: italic;"><hr />Everything You Didn't Want to Know about Python Objects</div></body></html> 
  • hodgestar/Talks/PythonObjects/html/pyobjects-10.html

    r340 r345  
    11<html> 
    22<head> 
    3 <title>Everything You Didn't Want to Known About Python Objects</title> 
     3<title>Everything You Didn't Want to Know about Python Objects</title> 
    44<link rel="stylesheet" type="text/css" href="main.css" /> 
    55<link rel="stylesheet" type="text/css" href="pygment.css" /> 
    66</head> 
    77<body> 
    8 <a accesskey="P" href="pyobjects-9.html">Prev</a> | <a href="pyobjects-0.html">Index</a> | <a acesskey="N" href="pyobjects-11.html">Next</a><div style='margin: auto; width: 50%;'><h2>object.c</h2><ul> 
    9 <li><img src='tabs.png' alt='' /></li> 
     8<div style='margin: auto; width: 50%;'><h2>C API Documentation</h2><ul> 
     9<li>PyObject API:<ul><li>List of methods unchanged between 2.5, 2.6 and 3.0</li> 
     10</ul></li> 
     11 
     12<li>New documentation!<ul><li>Interactive search -- in static HTML</li> 
     13 
     14<li>JSON index</li> 
     15 
     16<li><a href="file:///home/simon/LocalProjects/PythonSpint/trunk/Doc/build/html/index.html">2.6 Docs</a></li> 
     17</ul></li> 
    1018</ul> 
    11 </div><br /><div class="footer"><hr />Everything You Didn't Want to Known About Python Objects</div></body></html> 
     19</div><a accesskey="J" href="pyobjects-9.html">Prev</a> | <a href="pyobjects-0.html">Index</a> | Next<br /><div class="footer" style="font-style: italic;"><hr />Everything You Didn't Want to Know about Python Objects</div></body></html> 
  • hodgestar/Talks/PythonObjects/html/pyobjects-2.html

    r340 r345  
    11<html> 
    22<head> 
    3 <title>Everything You Didn't Want to Known About Python Objects</title> 
     3<title>Everything You Didn't Want to Know about Python Objects</title> 
    44<link rel="stylesheet" type="text/css" href="main.css" /> 
    55<link rel="stylesheet" type="text/css" href="pygment.css" /> 
    66</head> 
    77<body> 
    8 <a accesskey="P" href="pyobjects-1.html">Prev</a> | <a href="pyobjects-0.html">Index</a> | <a acesskey="N" href="pyobjects-3.html">Next</a><div style='margin: auto; width: 50%;'><h2>Out With The Old ...</h2><ul> 
     8<div style='margin: auto; width: 50%;'><h2>Out With The Old ...</h2><ul> 
    99<li>Old style:<div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="k">class</span> <span class="nc">Old</span><span class="p">:</span> 
    1010<span class="gp">... </span>  <span class="k">pass</span> 
     
    1212<span class="gp">&gt;&gt;&gt; </span><span class="nb">type</span><span class="p">(</span><span class="n">Old</span><span class="p">),</span> <span class="nb">type</span><span class="p">(</span><span class="n">Old</span><span class="p">())</span> 
    1313<span class="go">(&lt;type &#39;classobj&#39;&gt;, &lt;type &#39;instance&#39;&gt;)</span> 
     14<span class="gp">&gt;&gt;&gt; </span><span class="n">Old</span><span class="o">.</span><span class="n">__class__</span> 
     15<span class="gt">Traceback (most recent call last):</span> 
     16  File <span class="nb">&quot;&lt;stdin&gt;&quot;</span>, line <span class="m">1</span>, in <span class="n-Identifier">&lt;module&gt;</span> 
     17<span class="nc">AttributeError</span>: <span class="n-Identifier">class Old has no attribute &#39;__class__&#39;</span> 
     18<span class="gp">&gt;&gt;&gt; </span><span class="n">Old</span><span class="p">()</span><span class="o">.</span><span class="n">__class__</span> 
     19<span class="go">&lt;class util.Old at 0xb7d4e62c&gt;</span> 
    1420</pre></div> 
    1521</li> 
     
    2026<span class="gp">&gt;&gt;&gt; </span><span class="nb">type</span><span class="p">(</span><span class="n">New</span><span class="p">),</span> <span class="nb">type</span><span class="p">(</span><span class="n">New</span><span class="p">())</span> 
    2127<span class="go">(&lt;type &#39;type&#39;&gt;, &lt;class &#39;__main__.New&#39;&gt;)</span> 
     28<span class="gp">&gt;&gt;&gt; </span><span class="n">New</span><span class="o">.</span><span class="n">__class__</span> 
     29<span class="go">&lt;type &#39;type&#39;&gt;</span> 
     30<span class="gp">&gt;&gt;&gt; </span><span class="n">New</span><span class="p">()</span><span class="o">.</span><span class="n">__class__</span> 
     31<span class="go">&lt;class &#39;util.New&#39;&gt;</span> 
    2232</pre></div> 
    2333</li> 
     34 
     35<li>Old + __metaclass__ == New</li> 
    2436</ul> 
    25 </div><br /><div class="footer"><hr />Everything You Didn't Want to Known About Python Objects</div></body></html> 
     37</div><a accesskey="J" href="pyobjects-1.html">Prev</a> | <a href="pyobjects-0.html">Index</a> | <a accesskey="K" href="pyobjects-3.html">Next</a><br /><div class="footer" style="font-style: italic;"><hr />Everything You Didn't Want to Know about Python Objects</div></body></html> 
  • hodgestar/Talks/PythonObjects/html/pyobjects-3.html

    r340 r345  
    11<html> 
    22<head> 
    3 <title>Everything You Didn't Want to Known About Python Objects</title> 
     3<title>Everything You Didn't Want to Know about Python Objects</title> 
    44<link rel="stylesheet" type="text/css" href="main.css" /> 
    55<link rel="stylesheet" type="text/css" href="pygment.css" /> 
    66</head> 
    77<body> 
    8 <a accesskey="P" href="pyobjects-2.html">Prev</a> | <a href="pyobjects-0.html">Index</a> | <a acesskey="N" href="pyobjects-4.html">Next</a><div style='margin: auto; width: 50%;'><h2>Gambolling With Slots</h2><ul> 
     8<div style='margin: auto; width: 50%;'><h2>Gambolling With Slots</h2><ul> 
     9<li>Adding slots:<div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="k">class</span> <span class="nc">FooBar</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span> 
     10<span class="gp">... </span>  <span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> 
     11<span class="gp">... </span>    <span class="k">return</span> <span class="s">&quot;foobar&quot;</span> 
     12<span class="gp">...</span> 
     13<span class="gp">&gt;&gt;&gt; </span>  <span class="k">def</span> <span class="nf">__unicode__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> 
     14<span class="gp">... </span>    <span class="k">return</span> <span class="nb">unicode</span><span class="p">(</span><span class="s">&quot;foobar&quot;</span><span class="p">)</span> 
     15<span class="gp">...</span> 
     16<span class="gp">&gt;&gt;&gt; </span><span class="nb">str</span><span class="p">(</span><span class="n">FuBar</span><span class="p">),</span> <span class="nb">str</span><span class="p">(</span><span class="n">FuBar</span><span class="p">())</span> 
     17<span class="go">(&quot;&lt;class &#39;util.FuBar&#39;&gt;&quot;, &#39;fubar&#39;)</span> 
     18<span class="gp">&gt;&gt;&gt; </span><span class="nb">unicode</span><span class="p">(</span><span class="n">FuBar</span><span class="p">)</span> 
     19<span class="gt">Traceback (most recent call last):</span> 
     20  File <span class="nb">&quot;&lt;stdin&gt;&quot;</span>, line <span class="m">1</span>, in <span class="n-Identifier">&lt;module&gt;</span> 
     21<span class="nc">TypeError</span>: <span class="n-Identifier">unbound method __unicode__() must be called with FuBar instance as first argument (got nothing instead)</span> 
     22<span class="gp">&gt;&gt;&gt; </span><span class="nb">unicode</span><span class="p">(</span><span class="n">Uni</span><span class="p">())</span> 
     23<span class="go">u&#39;fubar&#39;</span> 
     24</pre></div> 
     25</li> 
     26 
     27<li>Same thing happens with old-style classes.</li> 
    928</ul> 
    10 </div><br /><div class="footer"><hr />Everything You Didn't Want to Known About Python Objects</div></body></html> 
     29</div><a accesskey="J" href="pyobjects-2.html">Prev</a> | <a href="pyobjects-0.html">Index</a> | <a accesskey="K" href="pyobjects-4.html">Next</a><br /><div class="footer" style="font-style: italic;"><hr />Everything You Didn't Want to Know about Python Objects</div></body></html> 
  • hodgestar/Talks/PythonObjects/html/pyobjects-4.html

    r340 r345  
    11<html> 
    22<head> 
    3 <title>Everything You Didn't Want to Known About Python Objects</title> 
     3<title>Everything You Didn't Want to Know about Python Objects</title> 
    44<link rel="stylesheet" type="text/css" href="main.css" /> 
    55<link rel="stylesheet" type="text/css" href="pygment.css" /> 
    66</head> 
    77<body> 
    8 <a accesskey="P" href="pyobjects-3.html">Prev</a> | <a href="pyobjects-0.html">Index</a> | <a acesskey="N" href="pyobjects-5.html">Next</a><div style='margin: auto; width: 50%;'><h2>Strings</h2><ul> 
    9 <li>Examples:<div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">x</span> <span class="o">=</span> <span class="nb">chr</span><span class="p">(</span><span class="mf">13</span><span class="p">)</span> 
    10 <span class="gp">&gt;&gt;&gt; </span><span class="n">y</span> <span class="o">=</span> <span class="nb">chr</span><span class="p">(</span><span class="mf">13</span><span class="p">)</span> 
    11 <span class="gp">&gt;&gt;&gt; </span><span class="nb">id</span><span class="p">(</span><span class="n">x</span><span class="p">),</span> <span class="nb">id</span><span class="p">(</span><span class="n">y</span><span class="p">)</span> 
    12 <span class="go">(3082874688L, 3082874688L)</span> 
    13 <span class="gp">&gt;&gt;&gt; </span><span class="n">x</span> <span class="o">=</span> <span class="nb">chr</span><span class="p">(</span><span class="mf">13</span><span class="p">)</span> <span class="o">+</span> <span class="nb">chr</span><span class="p">(</span><span class="mf">14</span><span class="p">)</span> 
    14 <span class="gp">&gt;&gt;&gt; </span><span class="n">y</span> <span class="o">=</span> <span class="nb">chr</span><span class="p">(</span><span class="mf">13</span><span class="p">)</span> <span class="o">+</span> <span class="nb">chr</span><span class="p">(</span><span class="mf">14</span><span class="p">)</span> 
    15 <span class="gp">&gt;&gt;&gt; </span><span class="nb">id</span><span class="p">(</span><span class="n">x</span><span class="p">),</span> <span class="nb">id</span><span class="p">(</span><span class="n">y</span><span class="p">)</span> 
    16 <span class="go">(3077159616L, 3077159584L)</span> 
    17 <span class="gp">&gt;&gt;&gt; </span><span class="n">x</span> <span class="o">=</span> <span class="s">&quot;a&quot;</span><span class="o">*</span><span class="mf">20</span> 
    18 <span class="gp">&gt;&gt;&gt; </span><span class="n">y</span> <span class="o">=</span> <span class="s">&quot;a&quot;</span><span class="o">*</span><span class="mf">20</span> 
    19 <span class="gp">&gt;&gt;&gt; </span><span class="n">z</span> <span class="o">=</span> <span class="s">&quot;a&quot;</span><span class="o">*</span><span class="mf">21</span> 
    20 <span class="gp">&gt;&gt;&gt; </span><span class="n">w</span> <span class="o">=</span> <span class="s">&quot;a&quot;</span><span class="o">*</span><span class="mf">21</span> 
    21 <span class="gp">&gt;&gt;&gt; </span><span class="nb">id</span><span class="p">(</span><span class="n">x</span><span class="p">),</span> <span class="nb">id</span><span class="p">(</span><span class="n">y</span><span class="p">),</span> <span class="nb">id</span><span class="p">(</span><span class="n">z</span><span class="p">),</span> <span class="nb">id</span><span class="p">(</span><span class="n">w</span><span class="p">)</span> 
    22 <span class="go">(3079663488L, 3079663488L, 3079721328L, 3079721568L)</span> 
    23 </pre></div> 
    24 </li> 
    25  
    26 <li>Single characters and empty string held in permament cache (Objects/stringobject.c).</li> 
    27  
    28 <li>Constants strings of size &lt;= 20 cache by parser (TODO: check).</li> 
    29  
    30 <li>PyString_InternInPlace (PyUnicode_InternInPlace in 3.0) results in strings being stored in internal dictionary.<ul><li>Reference in interned not counted in reference count (nasty hack to hide this from users).</li> 
    31 </ul></li> 
    32  
    33 <li>Strings are replaced by Unicode in 3.0</li> 
     8<div style='margin: auto; width: 50%;'><h2>object.c</h2><ul style='list-style-type: none;'> 
     9<li><img src='tabs.png' alt='' /></li> 
    3410</ul> 
    35 </div><br /><div class="footer"><hr />Everything You Didn't Want to Known About Python Objects</div></body></html> 
     11</div><a accesskey="J" href="pyobjects-3.html">Prev</a> | <a href="pyobjects-0.html">Index</a> | <a accesskey="K" href="pyobjects-5.html">Next</a><br /><div class="footer" style="font-style: italic;"><hr />Everything You Didn't Want to Know about Python Objects</div></body></html> 
  • hodgestar/Talks/PythonObjects/html/pyobjects-5.html

    r340 r345  
    11<html> 
    22<head> 
    3 <title>Everything You Didn't Want to Known About Python Objects</title> 
     3<title>Everything You Didn't Want to Know about Python Objects</title> 
    44<link rel="stylesheet" type="text/css" href="main.css" /> 
    55<link rel="stylesheet" type="text/css" href="pygment.css" /> 
    66</head> 
    77<body> 
    8 <a accesskey="P" href="pyobjects-4.html">Prev</a> | <a href="pyobjects-0.html">Index</a> | <a acesskey="N" href="pyobjects-6.html">Next</a><div style='margin: auto; width: 50%;'><h2>Find Big Dict</h2><ul> 
    9 <li>Util:<div class="highlight"><pre><span class="k">def</span> <span class="nf">find_big_dict</span><span class="p">(</span><span class="n">x</span><span class="p">):</span> 
    10     <span class="k">import</span> <span class="nn">gc</span> 
    11     <span class="k">for</span> <span class="n">obj</span> <span class="ow">in</span> <span class="n">gc</span><span class="o">.</span><span class="n">get_referrers</span><span class="p">(</span><span class="n">x</span><span class="p">):</span> 
    12         <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">obj</span><span class="p">)</span> <span class="ow">is</span> <span class="nb">dict</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">obj</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mf">1000</span><span class="p">:</span> 
    13             <span class="k">return</span> <span class="n">obj</span> 
    14     <span class="k">return</span> <span class="bp">None</span> 
     8<div style='margin: auto; width: 50%;'><h2>Strings</h2><ul> 
     9<li>Examples:<div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">x</span> <span class="o">=</span> <span class="nb">chr</span><span class="p">(</span><span class="mf">13</span><span class="p">)</span> 
     10<span class="gp">&gt;&gt;&gt; </span><span class="n">y</span> <span class="o">=</span> <span class="nb">chr</span><span class="p">(</span><span class="mf">13</span><span class="p">)</span> 
     11<span class="gp">&gt;&gt;&gt; </span><span class="nb">id</span><span class="p">(</span><span class="n">x</span><span class="p">),</span> <span class="nb">id</span><span class="p">(</span><span class="n">y</span><span class="p">)</span> 
     12<span class="go">(3082874688L, 3082874688L)</span> 
     13<span class="gp">&gt;&gt;&gt; </span><span class="n">x</span> <span class="o">=</span> <span class="nb">chr</span><span class="p">(</span><span class="mf">13</span><span class="p">)</span> <span class="o">+</span> <span class="nb">chr</span><span class="p">(</span><span class="mf">14</span><span class="p">)</span> 
     14<span class="gp">&gt;&gt;&gt; </span><span class="n">y</span> <span class="o">=</span> <span class="nb">chr</span><span class="p">(</span><span class="mf">13</span><span class="p">)</span> <span class="o">+</span> <span class="nb">chr</span><span class="p">(</span><span class="mf">14</span><span class="p">)</span> 
     15<span class="gp">&gt;&gt;&gt; </span><span class="nb">id</span><span class="p">(</span><span class="n">x</span><span class="p">),</span> <span class="nb">id</span><span class="p">(</span><span class="n">y</span><span class="p">)</span> 
     16<span class="go">(3077159616L, 3077159584L)</span> 
     17<span class="gp">&gt;&gt;&gt; </span><span class="n">x</span> <span class="o">=</span> <span class="s">&quot;a&quot;</span><span class="o">*</span><span class="mf">20</span> 
     18<span class="gp">&gt;&gt;&gt; </span><span class="n">y</span> <span class="o">=</span> <span class="s">&quot;a&quot;</span><span class="o">*</span><span class="mf">20</span> 
     19<span class="gp">&gt;&gt;&gt; </span><span class="n">z</span> <span class="o">=</span> <span class="s">&quot;a&quot;</span><span class="o">*</span><span class="mf">21</span> 
     20<span class="gp">&gt;&gt;&gt; </span><span class="n">w</span> <span class="o">=</span> <span class="s">&quot;a&quot;</span><span class="o">*</span><span class="mf">21</span> 
     21<span class="gp">&gt;&gt;&gt; </span><span class="nb">id</span><span class="p">(</span><span class="n">x</span><span class="p">),</span> <span class="nb">id</span><span class="p">(</span><span class="n">y</span><span class="p">),</span> <span class="nb">id</span><span class="p">(</span><span class="n">z</span><span class="p">),</span> <span class="nb">id</span><span class="p">(</span><span class="n">w</span><span class="p">)</span> 
     22<span class="go">(3079663488L, 3079663488L, 3079721328L, 3079721568L)</span> 
    1523</pre></div> 
    1624</li> 
    1725 
    18 <li>Example:<div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">interned</span> <span class="o">=</span> <span class="n">find_big_dict</span><span class="p">(</span><span class="s">&quot;a&quot;</span><span class="p">)</span> 
    19 </pre></div> 
    20 </li> 
     26<li>Single characters and empty string held in permament cache (Objects/stringobject.c).</li> 
    2127 
    22 <li>Game:<div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="k">import</span> <span class="nn">util</span> 
    23 <span class="gp">&gt;&gt;&gt; </span><span class="n">util</span><span class="o">.</span><span class="n">keyword_quiz</span><span class="p">()</span> 
    24 </pre></div> 
    25 </li> 
     28<li>Constants strings of size &lt;= 20 interned by parser.</li> 
     29 
     30<li>PyString_InternInPlace (PyUnicode_InternInPlace in 3.0) results in strings being stored in internal dictionary.<ul><li>Reference in interned not counted in reference count (nasty hack to hide this from users).</li> 
     31</ul></li> 
     32 
     33<li>Strings are replaced by Unicode in 3.0</li> 
    2634</ul> 
    27 </div><br /><div class="footer"><hr />Everything You Didn't Want to Known About Python Objects</div></body></html> 
     35</div><a accesskey="J" href="pyobjects-4.html">Prev</a> | <a href="pyobjects-0.html">Index</a> | <a accesskey="K" href="pyobjects-6.html">Next</a><br /><div class="footer" style="font-style: italic;"><hr />Everything You Didn't Want to Know about Python Objects</div></body></html> 
  • hodgestar/Talks/PythonObjects/html/pyobjects-6.html

    r340 r345  
    11<html> 
    22<head> 
    3 <title>Everything You Didn't Want to Known About Python Objects</title> 
     3<title>Everything You Didn't Want to Know about Python Objects</title> 
    44<link rel="stylesheet" type="text/css" href="main.css" /> 
    55<link rel="stylesheet" type="text/css" href="pygment.css" /> 
    66</head> 
    77<body> 
    8 <a accesskey="P" href="pyobjects-5.html">Prev</a> | <a href="pyobjects-0.html">Index</a> | <a acesskey="N" href="pyobjects-7.html">Next</a><div style='margin: auto; width: 50%;'><h2>Ints</h2><ul> 
    9 <li>For efficiency, ints are not malloc'ed singly but in PyIntBlocks.</li> 
    10  
    11 <li>Ints are replaced by Longs in 3.0 -- malloc list is gone.</li> 
    12  
    13 <li><div class="highlight"><pre><span class="go">Python 2.6a3+ (trunk:64269M, Jun 14 2008, 11:36:56) </span> 
    14 <span class="gp">&gt;&gt;&gt; </span><span class="n">util</span><span class="o">.</span><span class="n">memory</span><span class="p">()</span> 
    15 <span class="go">5849088.0</span> 
    16 <span class="gp">&gt;&gt;&gt; </span><span class="n">z</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="nb">range</span><span class="p">(</span><span class="mf">1000000</span><span class="p">))</span> 
    17 <span class="gp">&gt;&gt;&gt; </span><span class="n">util</span><span class="o">.</span><span class="n">memory</span><span class="p">()</span> 
    18 <span class="go">22380544.0</span> 
    19 <span class="gp">&gt;&gt;&gt; </span><span class="k">del</span> <span class="n">z</span> 
    20 <span class="gp">&gt;&gt;&gt; </span><span class="n">util</span><span class="o">.</span><span class="n">memory</span><span class="p">()</span> 
    21 <span class="go">17879040.0</span> 
     8<div style='margin: auto; width: 50%;'><h2>Find Big Dict</h2><ul> 
     9<li>Util:<div class="highlight"><pre><span class="k">def</span> <span class="nf">find_big_dict</span><span class="p">(</span><span class="n">x</span><span class="p">):</span> 
     10    <span class="k">import</span> <span class="nn">gc</span> 
     11    <span class="k">for</span> <span class="n">obj</span> <span class="ow">in</span> <span class="n">gc</span><span class="o">.</span><span class="n">get_referrers</span><span class="p">(</span><span class="n">x</span><span class="p">):</span> 
     12        <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">obj</span><span class="p">)</span> <span class="ow">is</span> <span class="nb">dict</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">obj</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mf">1000</span><span class="p">:</span> 
     13            <span class="k">return</span> <span class="n">obj</span> 
     14    <span class="k">return</span> <span class="bp">None</span> 
    2215</pre></div> 
    2316</li> 
    2417 
    25 <li><div class="highlight"><pre><span class="go">Python 3.0a5+ (py3k:64080, Jun 10 2008, 18:22:21)</span> 
    26 <span class="gp">&gt;&gt;&gt; </span><span class="n">util</span><span class="o">.</span><span class="n">memory</span><span class="p">()</span> 
    27 <span class="go">9302016.0</span> 
    28 <span class="gp">&gt;&gt;&gt; </span><span class="n">z</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="nb">range</span><span class="p">(</span><span class="mf">1000000</span><span class="p">))</span> 
    29 <span class="gp">&gt;&gt;&gt; </span><span class="n">util</span><span class="o">.</span><span class="n">memory</span><span class="p">()</span> 
    30 <span class="go">29011968.0</span> 
    31 <span class="gp">&gt;&gt;&gt; </span><span class="k">del</span> <span class="n">z</span> 
    32 <span class="gp">&gt;&gt;&gt; </span><span class="n">util</span><span class="o">.</span><span class="n">memory</span><span class="p">()</span> 
    33 <span class="go">9302016.0</span> 
     18<li>Example:<div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">interned</span> <span class="o">=</span> <span class="n">find_big_dict</span><span class="p">(</span><span class="s">&quot;a&quot;</span><span class="p">)</span> 
     19</pre></div> 
     20</li> 
     21 
     22<li>Game:<div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="k">import</span> <span class="nn">util</span> 
     23<span class="gp">&gt;&gt;&gt; </span><span class="n">util</span><span class="o">.</span><span class="n">keyword_quiz</span><span class="p">()</span> 
    3424</pre></div> 
    3525</li> 
    3626</ul> 
    37 </div><br /><div class="footer"><hr />Everything You Didn't Want to Known About Python Objects</div></body></html> 
     27</div><a accesskey="J" href="pyobjects-5.html">Prev</a> | <a href="pyobjects-0.html">Index</a> | <a accesskey="K" href="pyobjects-7.html">Next</a><br /><div class="footer" style="font-style: italic;"><hr />Everything You Didn't Want to Know about Python Objects</div></body></html> 
  • hodgestar/Talks/PythonObjects/html/pyobjects-7.html

    r340 r345  
    11<html> 
    22<head> 
    3 <title>Everything You Didn't Want to Known About Python Objects</title> 
     3<title>Everything You Didn't Want to Know about Python Objects</title> 
    44<link rel="stylesheet" type="text/css" href="main.css" /> 
    55<link rel="stylesheet" type="text/css" href="pygment.css" /> 
    66</head> 
    77<body> 
    8 <a accesskey="P" href="pyobjects-6.html">Prev</a> | <a href="pyobjects-0.html">Index</a> | <a acesskey="N" href="pyobjects-8.html">Next</a><div style='margin: auto; width: 50%;'><h2>Int (speed)</h2><ul> 
    9 <li><div class="highlight"><pre><span class="go">$ ./python -m timeit &quot;list(x for x in range(2**30,2**30+1000))&quot;</span> 
    10 <span class="go">10000 loops, best of 3: 176 usec per loop</span> 
    11 <span class="go">$ ../py3k/python -m timeit &quot;list(x for x in range(2**30,2**30+1000))&quot;</span> 
    12 <span class="go">1000 loops, best of 3: 202 usec per loop</span> 
    13 <span class="go">$ ./python -m timeit &quot;list(x for x in range(2**37,2**37+1000))&quot;</span> 
    14 <span class="go">1000 loops, best of 3: 311 usec per loop</span> 
    15 <span class="go">$ ../py3k/python -m timeit &quot;list(x for x in range(2**37,2**37+1000))&quot;</span> 
    16 <span class="go">1000 loops, best of 3: 431 usec per loop</span> 
    17 <span class="go">$ ./python -m timeit &quot;list(x for x in range(2**63,2**63+1000))&quot;</span> 
    18 <span class="go">1000 loops, best of 3: 320 usec per loop</span> 
    19 <span class="go">$ ../py3k/python -m timeit &quot;list(x for x in range(2**63,2**63+1000))&quot;</span> 
    20 <span class="go">1000 loops, best of 3: 439 usec per loop</span> 
     8<div style='margin: auto; width: 50%;'><h2>Ints</h2><ul> 
     9<li>For efficiency, ints are not malloc'ed singly but in PyIntBlocks.</li> 
     10 
     11<li>Ints are replaced by Longs in 3.0 -- malloc list is gone.</li> 
     12 
     13<li><div class="highlight"><pre><span class="go">Python 2.6a3+ (trunk:64269M, Jun 14 2008, 11:36:56) </span> 
     14<span class="gp">&gt;&gt;&gt; </span><span class="n">util</span><span class="o">.</span><span class="n">memory</span><span class="p">()</span> 
     15<span class="go">5849088.0</span> 
     16<span class="gp">&gt;&gt;&gt; </span><span class="n">z</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="nb">range</span><span class="p">(</span><span class="mf">1000000</span><span class="p">))</span> 
     17<span class="gp">&gt;&gt;&gt; </span><span class="n">util</span><span class="o">.</span><span class="n">memory</span><span class="p">()</span> 
     18<span class="go">22380544.0</span> 
     19<span class="gp">&gt;&gt;&gt; </span><span class="k">del</span> <span class="n">z</span> 
     20<span class="gp">&gt;&gt;&gt; </span><span class="n">util</span><span class="o">.</span><span class="n">memory</span><span class="p">()</span> 
     21<span class="go">17879040.0</span> 
     22</pre></div> 
     23</li> 
     24 
     25<li><div class="highlight"><pre><span class="go">Python 3.0a5+ (py3k:64080, Jun 10 2008, 18:22:21)</span> 
     26<span class="gp">&gt;&gt;&gt; </span><span class="n">util</span><span class="o">.</span><span class="n">memory</span><span class="p">()</span> 
     27<span class="go">9302016.0</span> 
     28<span class="gp">&gt;&gt;&gt; </span><span class="n">z</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="nb">range</span><span class="p">(</span><span class="mf">1000000</span><span class="p">))</span> 
     29<span class="gp">&gt;&gt;&gt; </span><span class="n">util</span><span class="o">.</span><span class="n">memory</span><span class="p">()</span> 
     30<span class="go">29011968.0</span> 
     31<span class="gp">&gt;&gt;&gt; </span><span class="k">del</span> <span class="n">z</span> 
     32<span class="gp">&gt;&gt;&gt; </span><span class="n">util</span><span class="o">.</span><span class="n">memory</span><span class="p">()</span> 
     33<span class="go">9302016.0</span> 
    2134</pre></div> 
    2235</li> 
    2336</ul> 
    24 </div><br /><div class="footer"><hr />Everything You Didn't Want to Known About Python Objects</div></body></html> 
     37</div><a accesskey="J" href="pyobjects-6.html">Prev</a> | <a href="pyobjects-0.html">Index</a> | <a accesskey="K" href="pyobjects-8.html">Next</a><br /><div class="footer" style="font-style: italic;"><hr />Everything You Didn't Want to Know about Python Objects</div></body></html> 
  • hodgestar/Talks/PythonObjects/html/pyobjects-8.html

    r340 r345  
    11<html> 
    22<head> 
    3 <title>Everything You Didn't Want to Known About Python Objects</title> 
     3<title>Everything You Didn't Want to Know about Python Objects</title> 
    44<link rel="stylesheet" type="text/css" href="main.css" /> 
    55<link rel="stylesheet" type="text/css" href="pygment.css" /> 
    66</head> 
    77<body> 
    8 <a accesskey="P" href="pyobjects-7.html">Prev</a> | <a href="pyobjects-0.html">Index</a> | <a acesskey="N" href="pyobjects-9.html">Next</a><div style='margin: auto; width: 50%;'><h2>Floats</h2><ul> 
    9 <li>Like ints in 2.6, only in 3.0 as well.</li> 
    10  
    11 <li>You won't get your memory back.</li> 
    12  
    13 <li>Maybe we could remove this, run some tests and submit a patch (checking bug tracker first, of course)?</li> 
    14  
    15 <li>Perhaps just use numpy?</li> 
     8<div style='margin: auto; width: 50%;'><h2>Int (speed)</h2><ul> 
     9<li><div class="highlight"><pre><span class="go">$ ./python -m timeit &quot;list(x for x in range(2**30,2**30+1000))&quot;</span> 
     10<span class="go">10000 loops, best of 3: 176 usec per loop</span> 
     11<span class="go">$ ../py3k/python -m timeit &quot;list(x for x in range(2**30,2**30+1000))&quot;</span> 
     12<span class="go">1000 loops, best of 3: 202 usec per loop</span> 
     13<span class="go">$ ./python -m timeit &quot;list(x for x in range(2**37,2**37+1000))&quot;</span> 
     14<span class="go">1000 loops, best of 3: 311 usec per loop</span> 
     15<span class="go">$ ../py3k/python -m timeit &quot;list(x for x in range(2**37,2**37+1000))&quot;</span> 
     16<span class="go">1000 loops, best of 3: 431 usec per loop</span> 
     17<span class="go">$ ./python -m timeit &quot;list(x for x in range(2**63,2**63+1000))&quot;</span> 
     18<span class="go">1000 loops, best of 3: 320 usec per loop</span> 
     19<span class="go">$ ../py3k/python -m timeit &quot;list(x for x in range(2**63,2**63+1000))&quot;</span> 
     20<span class="go">1000 loops, best of 3: 439 usec per loop</span> 
     21</pre></div> 
     22</li> 
    1623</ul> 
    17 </div><br /><div class="footer"><hr />Everything You Didn't Want to Known About Python Objects</div></body></html> 
     24</div><a accesskey="J" href="pyobjects-7.html">Prev</a> | <a href="pyobjects-0.html">Index</a> | <a accesskey="K" href="pyobjects-9.html">Next</a><br /><div class="footer" style="font-style: italic;"><hr />Everything You Didn't Want to Know about Python Objects</div></body></html> 
  • hodgestar/Talks/PythonObjects/html/pyobjects-9.html

    r340 r345  
    11<html> 
    22<head> 
    3 <title>Everything You Didn't Want to Known About Python Objects</title> 
     3<title>Everything You Didn't Want to Know about Python Objects</title> 
    44<link rel="stylesheet" type="text/css" href="main.css" /> 
    55<link rel="stylesheet" type="text/css" href="pygment.css" /> 
    66</head> 
    77<body> 
    8 <a accesskey="P" href="pyobjects-8.html">Prev</a> | <a href="pyobjects-0.html">Index</a> | <a acesskey="N" href="pyobjects-10.html">Next</a><div style='margin: auto; width: 50%;'><h2>PyObject C API</h2><ul> 
    9 <li>List of methods unchanged between 2.5 and 2.6</li> 
     8<div style='margin: auto; width: 50%;'><h2>Floats</h2><ul> 
     9<li>Like ints in 2.6, only in 3.0 as well.</li> 
     10 
     11<li>You won't get your memory back.</li> 
     12 
     13<li>Maybe we could remove this, run some tests and submit a patch (checking bug tracker first, of course)?</li> 
     14 
     15<li>Perhaps just use numpy?</li> 
    1016</ul> 
    11 </div><br /><div class="footer"><hr />Everything You Didn't Want to Known About Python Objects</div></body></html> 
     17</div><a accesskey="J" href="pyobjects-8.html">Prev</a> | <a href="pyobjects-0.html">Index</a> | <a accesskey="K" href="pyobjects-10.html">Next</a><br /><div class="footer" style="font-style: italic;"><hr />Everything You Didn't Want to Know about Python Objects</div></body></html>