<div class="gmail_quote">On 25 September 2012 19:08, Junkshops <span dir="ltr"><<a href="mailto:junkshops@gmail.com" target="_blank">junkshops@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

  
    
  
  <div bgcolor="#FFFFFF" text="#000000"><div class="im">
    <blockquote type="cite">
      <div><br>
      </div>
      <div>Can you give an example of how these data structures look
        after reading only the first 5 lines?</div>
    </blockquote></div>
    Sure, here you go:<br>
    <br>
    In [38]: mpef._ustore._store<br>
    Out[38]: defaultdict(<type 'dict'>, {'Measurement':
    {'8991c2dc67a49b909918477ee4efd767':
    <micropheno.exchangeformat.Exceptions.FileContext object at
    0x2f0fe90>, '7b38b429230f00fe4731e60419e92346':
    <micropheno.exchangeformat.Exceptions.FileContext object at
    0x2f0fad0>, 'b53531471b261c44d52f651add647544':
    <micropheno.exchangeformat.Exceptions.FileContext object at
    0x2f0f4d0>, '44ea6d949f7c8c8ac3bb4c0bf4943f82':
    <micropheno.exchangeformat.Exceptions.FileContext object at
    0x2f0f910>, '0de96f928dc471b297f8a305e71ae3e1':
    <micropheno.exchangeformat.Exceptions.FileContext object at
    0x2f0f550>}})<br></div></blockquote><div><br></div><div>Have these exceptions been raised from somewhere before being stored? I wonder if you're inadvertently keeping execution frames alive. There are some problems in CPython with this that are related to storing exceptions.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div bgcolor="#FFFFFF" text="#000000">
    <br>
    In [39]:
mpef._ustore._store['Measurement']['b53531471b261c44d52f651add647544'].typeStr<br>
    Out[39]: 'Measurement'<br></div></blockquote><div><br></div><div>Seeing how long these hex strings are, I'm confident that you would save a significant amount of memory by converting them to int.</div><div>
 </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div bgcolor="#FFFFFF" text="#000000">
    <br>
    In [40]:
mpef._ustore._store['Measurement']['b53531471b261c44d52f651add647544'].lineNumber<br>
    Out[40]: 5<br>
    <br>
    In [41]: mpef._ustore._idstore<br>
    Out[41]: defaultdict(<class
    'micropheno.exchangeformat.KBaseID.IDStore'>, {'Measurement':
    <micropheno.exchangeformat.KBaseID.IDStore object at
    0x2f0f950>})<br>
    <br>
    In [43]: mpef._ustore._idstore['Measurement']._SIDstore<br>
    Out[43]: defaultdict(<function <lambda> at 0x2ece7d0>,
    {'emailRemoved': defaultdict(<function <lambda> at
    0x2c4caa0>, {'microPhenoShew2011': defaultdict(<type
    'dict'>, {0: {'MLR_124572462':
    '8991c2dc67a49b909918477ee4efd767', 'MLR_124572161':
    '7b38b429230f00fe4731e60419e92346', 'SMMLR_12551352':
    'b53531471b261c44d52f651add647544', 'SMMLR_12551051':
    '0de96f928dc471b297f8a305e71ae3e1', 'SMMLR_12550750':
    '44ea6d949f7c8c8ac3bb4c0bf4943f82'}})})})<br></div></blockquote><div><br></div><div>Also I think lambda functions might be able to keep the frame alive. Are they by any chance being created in a function that is called in a loop?</div>
<div><br></div><div><div>>>> def f():</div><div>...     x = 4</div><div>...     return lambda : x</div><div>...</div><div>>>> g = f()</div><div>>>> g()  # Accesses local variable from kept-alive frame</div>
<div>4</div><div>>>> x</div><div>Traceback (most recent call last):</div><div>  File "<stdin>", line 1, in <module></div><div>NameError: name 'x' is not defined</div></div><div><br></div>
<div>Oscar</div></div>