[Python] Rilascio memoria

2014-11-27 Per discussione Matteo Boscolo

Ciao a tutti ..

Ho un problemino con il rilascio della memoria di una oggetto abbastanza 
corposo che referenzio all'interno di un dizionario in questo modo


class myObject(object):
pass

myDict={a:myObject()}

per deferenziarlo utilizzo:

del(myDict['a'])

diciamo che il mio applicativo riesce ad accumulare circa 4 giga di 
memoria in 4 ore di lavoro.. andando a cancellare e referenziare piu 
volte oggetti all'interno di quel dizionario myDict

che naturalmente non scaricano la memoria ma sale sempre..


pensavo di usare dei thread per ogni oggetto in modo che una volta che 
ho finito di utlilizzarlo il thread muore e la memoria mi si scarica.. 
ma non ho ancora fatto delle prove in meriro

avete qualche idea o suggerimento in merito ??

grazie mille
Matteo

---
Questa e-mail è priva di virus e malware perché è attiva la protezione avast! 
Antivirus.
http://www.avast.com

___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Rilascio memoria

2014-11-27 Per discussione Marco Giusti
On Thu, Nov 27 2014, Matteo Boscolo wrote:
 Ciao a tutti ..
 
 Ho un problemino con il rilascio della memoria di una oggetto
 abbastanza corposo che referenzio all'interno di un dizionario in
 questo modo
 
 class myObject(object):
 pass
 
 myDict={a:myObject()}
 
 per deferenziarlo utilizzo:
 
 del(myDict['a'])
 
 diciamo che il mio applicativo riesce ad accumulare circa 4 giga di
 memoria in 4 ore di lavoro.. andando a cancellare e referenziare piu
 volte oggetti all'interno di quel dizionario myDict
 che naturalmente non scaricano la memoria ma sale sempre..
 
 
 pensavo di usare dei thread per ogni oggetto in modo che una volta
 che ho finito di utlilizzarlo il thread muore e la memoria mi si
 scarica.. ma non ho ancora fatto delle prove in meriro
 avete qualche idea o suggerimento in merito ??

Sì, non usare i thread. Se l'oggetto rimane in memoria vuol dire che c'è
un altro riferimento allo stesso e i thread non ti aiutano ad eliminarlo.
Forse ti obbligano a rivedere l'applicativo e indirettamente a risolvere
il problema, ma fai un favore a te stesso e non usare i thread.

Io ho usato objgraph per risolvere un problema simile. E' molto
semplice da usare ma richiede un po' di tempo per elaborare i risultati.

m.
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Rilascio memoria

2014-11-27 Per discussione Manlio Perillo
2014-11-27 18:19 GMT+01:00 Matteo Boscolo matteo.bosc...@boscolini.eu:

 Ciao a tutti ..

 Ho un problemino con il rilascio della memoria di una oggetto abbastanza
 corposo che referenzio all'interno di un dizionario in questo modo

 class myObject(object):
 pass

 myDict={a:myObject()}

 per deferenziarlo utilizzo:

 del(myDict['a'])

 diciamo che il mio applicativo riesce ad accumulare circa 4 giga di
 memoria in 4 ore di lavoro.. andando a cancellare e referenziare piu volte
 oggetti all'interno di quel dizionario myDict
 che naturalmente non scaricano la memoria ma sale sempre..


Che versione di Python usi?

Non so come si comportano le ultime versioni, ma l'interprete non rilascia
tutta la memoria al sistema operativo, ma la trattiene per uso futuro.

Se l'uso di memoria sale in modo continuo, direi che lasci dei riferimenti
agli oggetti in giro per il programma.  Controlla tutti i posti in cui usi
MyDict['a']


 [...]


Ciao  Manlio
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Rilascio memoria

2014-11-27 Per discussione Nicola Larosa
Manlio Perillo wrote:
 Non so come si comportano le ultime versioni, ma l'interprete non 
 rilascia tutta la memoria al sistema operativo, ma la trattiene per
 uso futuro.

Quel bug è stato corretto nella v.2.5 di Python, nel 2006:

Python Memory Management Part 3: The Saga is Over
http://www.evanjones.ca/python-memory-part3.html

-- 
Nicola 'tekNico' Larosa http://www.tekNico.net/

Are you quite sure that all those bells and whistles, all those wonder-
ful facilities of your so called powerful programming languages, belong
to the solution set rather than the problem set? - Edsger W. Dijkstra
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Rilascio memoria

2014-11-27 Per discussione Matteo Boscolo

Il 27/11/2014 19:16, Manlio Perillo ha scritto:

2014-11-27 18:19 GMT+01:00 Matteo Boscolo matteo.bosc...@boscolini.eu
mailto:matteo.bosc...@boscolini.eu:

Ciao a tutti ..

Ho un problemino con il rilascio della memoria di una oggetto
abbastanza corposo che referenzio all'interno di un dizionario in
questo modo

class myObject(object):
pass

myDict={a:myObject()}

per deferenziarlo utilizzo:

del(myDict['a'])

diciamo che il mio applicativo riesce ad accumulare circa 4 giga
di memoria in 4 ore di lavoro.. andando a cancellare e
referenziare piu volte oggetti all'interno di quel dizionario myDict
che naturalmente non scaricano la memoria ma sale sempre..


Che versione di Python usi?


uso la 2.7


Non so come si comportano le ultime versioni, ma l'interprete non
rilascia tutta la memoria al sistema operativo, ma la trattiene per
uso futuro.

Se l'uso di memoria sale in modo continuo, direi che lasci dei
riferimenti agli oggetti in giro per il programma.  Controlla tutti i
posti in cui usi MyDict['a']


abitualmente faccio molte chiamate su questo oggetto via xml-rpc .. che
sia li la fonte del problema ..



 [...]


Ciao  Manlio


___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python




---
Questa e-mail è priva di virus e malware perché è attiva la protezione avast! 
Antivirus.
http://www.avast.com
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python