En Sun, 20 Apr 2008 09:46:37 -0300, Hank @ITGroup <hank.infotec@g mail.comescribi ó:
Apart from what everyone has already said, consider that FreqDist may import other modules, store global state, create other objects... whatever.
Pure python code should not have any memory leaks (if there are, it's a bug in the Python interpreter). Not-carefully-written C extensions may introduce memory problems.
--
Gabriel Genellina
``starting python`` # == Windows Task Manager:
Python.exe *4,076 *K memory-usage ==
>
>
>
... fd3 = FreqDist()
... for i in range(999999):f d3.inc(i)
>
>
... fd4 = FreqDist()
... for i in range(999999):f d4.inc(i)
... del fd4
# == 28,788 K ==
>
>
That is my question, after ``del``, sometimes the memory space returns
back as nothing happened, sometimes not... ...
What exactly was happening???
Python.exe *4,076 *K memory-usage ==
>>st1='abcdefg' *999999 # == 10,952 K ==
>>del st1 # == *4,104*K ==
>>st1='abcdefg' *999999 # == 10,952 K ==
>>del st1 # == 4,104 K ==
>>del st1 # == *4,104*K ==
>>st1='abcdefg' *999999 # == 10,952 K ==
>>del st1 # == 4,104 K ==
>>li = ['abcde']*999999 # == 8,024 K ==
>>del li # == *4,108* K ==
>>del li # == *4,108* K ==
>>from nltk import FreqDist # == 17,596 ==
>>fd = FreqDist() # == 17,596 ==
>>for i in range(999999):f d.inc(i) # == 53,412 ==
>>del fd # == *28,780* ==
>>fd2 = FreqDist() # == 28,780 ==
>>for i in range(999999):f d2.inc(i) # == 53,412 ==
>>del fd2 # == 28,780 K ==
>>fd = FreqDist() # == 17,596 ==
>>for i in range(999999):f d.inc(i) # == 53,412 ==
>>del fd # == *28,780* ==
>>fd2 = FreqDist() # == 28,780 ==
>>for i in range(999999):f d2.inc(i) # == 53,412 ==
>>del fd2 # == 28,780 K ==
>>def foo():
... for i in range(999999):f d3.inc(i)
>
>> foo() # == *28,788* K ==
>>def bar():
... for i in range(999999):f d4.inc(i)
... del fd4
# == 28,788 K ==
>>bar() # == 28,788 K ==
>
That is my question, after ``del``, sometimes the memory space returns
back as nothing happened, sometimes not... ...
What exactly was happening???
Pure python code should not have any memory leaks (if there are, it's a bug in the Python interpreter). Not-carefully-written C extensions may introduce memory problems.
--
Gabriel Genellina