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