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_**properties.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/**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