[Python] Rilascio memoria
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
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 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
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
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