On 22 October 2012 01:14, Pradipto Banerjee <span dir="ltr"><<a href="mailto:pradipto.banerjee@adainvestments.com" target="_blank">pradipto.banerjee@adainvestments.com</a>></span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I tried this on a different PC with 12 GB RAM. As expected, this time, reading the data was no issue. I noticed that for large files, Python takes up 2.5x size in memory compared to size on disk, for the case when each line in the file is retained as a string within a Python list. As an anecdote, for MATLAB, the similar overhead is 2x, slightly lower than Python, and each line in the file was retained as string within a MATLAB cell. I'm curious, has any one compared the overhead of data in memory for other languages like for instance Ruby?</blockquote>
<div><br></div><div>What version of Python were you using? 2.7? 3.2? 3.3?</div><div><br></div><div>If you can, try running the same program in Python 3.3 and compare the amount of memory used and report it here. It sounds like this might be a case that would greatly benefit from the new string representation in 3.3.</div>
<div><br></div><div>If you're using Python 3.x then the "byte" and "bytearray" types might be of interest to you:</div><div><a href="http://docs.python.org/py3k/library/stdtypes.html#binary-sequence-types-bytes-bytearray-memoryview">http://docs.python.org/py3k/library/stdtypes.html#binary-sequence-types-bytes-bytearray-memoryview</a></div>
<div><br></div><div>Alternatively, the "array" type might be useful:<br></div><div><a href="http://docs.python.org/py3k/library/array.html">http://docs.python.org/py3k/library/array.html</a></div><div><br></div>
<div>As to the core problem, I can only echo what others have said - only hold in memory what you absolutely have to. There are various techniques to avoid holding unnecessary data in memory that have been mentioned. One I haven't seen here yet (I may have missed it) is dumping the data into a database of some form and using it's capabilities.</div>
<div><br></div><div>Tim Delaney</div></div>