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 > >