If I understand well then python release the mem. for reuse by itself but 
not releasing at OS level. Fine.

But then if I rerun the function I'll expect that the mem allocated for 
python is not growing. Because python reuse it.

I executed the controller function and my mem usage at OS level 2x as after 
first run. It sounds not right.

2012. május 10., csütörtök 9:41:31 UTC+2 időpontban Bruce Wade a következőt 
írta:
>
>
> http://effbot.org/pyfaq/why-doesnt-python-release-the-memory-when-i-delete-a-large-object.htm
>
> That is a little more details
>
> On Thu, May 10, 2012 at 12:37 AM, szimszon <szims...@gmail.com> wrote:
>
>> Should the garbage collector not free up the memory?
>>
>> 2012. május 10., csütörtök 9:28:48 UTC+2 időpontban Bruce Wade a 
>> következőt írta:
>>
>>> That is how python is. If you want something to clear the memory as soon 
>>> as you are done with it you need C++ :D
>>>
>>> On Thu, May 10, 2012 at 12:27 AM, szimszon <szims...@gmail.com> wrote:
>>>
>>>> Yes I know but it happens over type the mem usage is linearly growing 
>>>> and after the successful execution never released and that is why I ask :(
>>>>
>>>> 2012. május 10., csütörtök 9:14:14 UTC+2 időpontban Bruce Wade a 
>>>> következőt írta:
>>>>
>>>>> WOW not a good idea: 
>>>>> for row in db( db.file_**propert**ies.id > 0 ).select(
>>>>>
>>>>> If you have a lot of records that is going to kill your memory.
>>>>>
>>>>> On Thu, May 10, 2012 at 12:10 AM, szimszon <szims...@gmail.com> wrote:
>>>>>
>>>>>> I wonder if somebody could help me.
>>>>>>
>>>>>> The following code has eaten up ~1,5GB ram and after ended 
>>>>>> successfully it is not released :(
>>>>>>
>>>>>> file_properties table has 137314 rows.
>>>>>>
>>>>>> Model:
>>>>>> db.define_table( 'files_store',
>>>>>>                                 Field( 'name', 'string',
>>>>>>                                             label = 'Fájlnév' ,
>>>>>>                                             ),
>>>>>>                                 Field( 'content', 'upload',
>>>>>>                                             uploadseparate = True,
>>>>>>                                             autodelete = True,
>>>>>>                                             label = 'Aláírt fájl',
>>>>>>                                             ),
>>>>>>                                 Field( 'status', 'string',
>>>>>>                                             label = 'Állapot',
>>>>>>                                             requires = IS_IN_SET( [
>>>>>> 'empty', 'notsigned', 'senttosign', 'signed'],
>>>>>>                                                                       
>>>>>>                   [ 'Üres', 'Aláiratlan', 'Aláírásra elküldve', 
>>>>>> 'Aláírt'] ),
>>>>>>                                             represent = lambda r, row
>>>>>> :T( r )
>>>>>>                                             ),
>>>>>>                                 Field( 'state', 'string',
>>>>>>                                             label = 'Státusz',
>>>>>>                                             requires = IS_IN_SET( [
>>>>>> 'ok', 'error'],
>>>>>>                                                                       
>>>>>>                   [ 'Rendben', 'Hiba'] ),
>>>>>>                                             represent = lambda r, row
>>>>>> :T( r )
>>>>>>                                             ),
>>>>>>                                 Field( 'data_count', 'integer',
>>>>>>                                             label = 'Adat 
>>>>>> bejegyzések',
>>>>>>                                             requires = IS_NOT_EMPTY
>>>>>> (),
>>>>>>                                             default = 0,
>>>>>>                                             ),
>>>>>>                                 Field( 'dirname', 'string',
>>>>>>                                             label = 'Könyvtár név' ,
>>>>>>                                             requires = IS_NOT_EMPTY
>>>>>> (),
>>>>>>                                             ),
>>>>>>                                 Field( 'md5sum', 'string',
>>>>>>                                             label = T( 'MD5 Sum' ),
>>>>>>                                             represent = lambda md5sum
>>>>>> , junk: '[%s]' % md5sum,
>>>>>>                                             writable = False ),
>>>>>>                             auth.signature,
>>>>>>                             format = '%(dirname)s/%(name)s (%(id)s)'
>>>>>>  )
>>>>>> db.files_store.created_on.read****able = True
>>>>>> db.define_table( 'file_properties',
>>>>>>                                 Field( 'files_store_id', db.
>>>>>> files_store,
>>>>>>                                             label = 'Aláírt fájl' ,
>>>>>>                                             ),
>>>>>>                                 Field( 'kezdo_oldal', 'integer',
>>>>>>                                             label = 'Számla kezdő 
>>>>>> oldal',
>>>>>>                                             requires = IS_NOT_EMPTY
>>>>>> (),
>>>>>>                                             ),
>>>>>>                                 Field( 'oldalszam', 'integer',
>>>>>>                                             label = 'Számla 
>>>>>> oldalainak száma',
>>>>>>                                             requires = IS_NOT_EMPTY
>>>>>> (),
>>>>>>                                             ),
>>>>>>                                 Field( 'szamla_sorszama', 'string',
>>>>>>                                             label = 'Számla sorszáma'
>>>>>> ,
>>>>>>                                             #requires = 
>>>>>> IS_NOT_IN_DB( db, 'file_properties' ),
>>>>>>                                             unique = True,
>>>>>>                                             ),
>>>>>>                                 Field( 'ugyfel_azonosito', 'string',
>>>>>>                                             label = 'Ügyfél 
>>>>>> azonosító',
>>>>>>                                             requires = IS_NOT_EMPTY
>>>>>> (),
>>>>>>                                             ),
>>>>>>                                 Field( 'folyoszamla_azonosito', 
>>>>>> 'string',
>>>>>>                                             label = 'Folyószámla 
>>>>>> azonosító',
>>>>>>                                             requires = IS_NOT_EMPTY
>>>>>> (),
>>>>>>                                             ),
>>>>>>                                 Field( 'teljesites_idopontja', 'date'
>>>>>> ,
>>>>>>                                             label = 'Teljesítés 
>>>>>> időpontja',
>>>>>>                                             requires = IS_DATE( 
>>>>>> '%Y.%m.%d.' ) ),
>>>>>>                                 auth.signature,
>>>>>>                                 ),
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> Controller:
>>>>>>
>>>>>> def autoadjust():
>>>>>>     lista = list()
>>>>>>     last_row = None
>>>>>>     next_page_number = 0
>>>>>>     for row in db( db.file_properties.id > 0 ).select(
>>>>>>                                                                       
>>>>>>                       orderby = ( db.file_properties.files_**store**
>>>>>> _id,
>>>>>>                                                                       
>>>>>>                                           db.file_properties.id )
>>>>>>                                                                       
>>>>>>                       ):
>>>>>>         if last_row:
>>>>>>             if last_row.files_store_id == row.files_store_id:
>>>>>>                 if next_page_number > row.kezdo_oldal:
>>>>>>                     row.update_record( kezdo_oldal =next_page_number 
>>>>>> )
>>>>>>
>>>>>>             else:
>>>>>>                 last_row = row
>>>>>>         else:
>>>>>>             last_row = row
>>>>>>         next_page_number = row.kezdo_oldal + row.oldalszam
>>>>>>
>>>>>>         lista.append( TR(
>>>>>>                                         TD( row.id ),
>>>>>>                                         TD( row.files_store_id.name 
>>>>>> ),
>>>>>>                                         TD( row.kezdo_oldal ),
>>>>>>                                         TD( row.oldalszam )
>>>>>>                                         ) )
>>>>>>     lista = TABLE( *lista )
>>>>>>     return dict( lista = lista )
>>>>>>
>>>>>>
>>>>>> View:
>>>>>> {{extend 'layout.html'}}
>>>>>> {{block statusbar}}
>>>>>> <h4>Admin felület</h4>
>>>>>> {{end}}
>>>>>>
>>>>>> <h2>AdjustPage</h2>
>>>>>>
>>>>>> {{=lista}}
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> -- 
>>>>> -- 
>>>>> Regards,
>>>>> Bruce Wade
>>>>> http://ca.linkedin.com/in/**bruc**elwade<http://ca.linkedin.com/in/brucelwade>
>>>>> http://www.wadecybertech.com
>>>>> http://www.fittraineronline.**co**m <http://www.fittraineronline.com>- 
>>>>> Fitness Personal Trainers Online
>>>>> http://www.warplydesigned.com
>>>>>
>>>>>  
>>>
>>>
>>> -- 
>>> -- 
>>> Regards,
>>> Bruce Wade
>>> http://ca.linkedin.com/in/**brucelwade<http://ca.linkedin.com/in/brucelwade>
>>> http://www.wadecybertech.com
>>> http://www.fittraineronline.**com <http://www.fittraineronline.com> - 
>>> Fitness Personal Trainers Online
>>> http://www.warplydesigned.com
>>>
>>>
>
>
> -- 
> -- 
> Regards,
> Bruce Wade
> http://ca.linkedin.com/in/brucelwade
> http://www.wadecybertech.com
> http://www.fittraineronline.com - Fitness Personal Trainers Online
> http://www.warplydesigned.com
>
> 

Reply via email to