[Python] Memory error

Daniele Varrazzo piro a develer.com
Mer 3 Nov 2010 18:28:50 CET


On Wed, 03 Nov 2010 18:16:57 +0100, CoPlast SRL <listemessaggi a coplast.eu>
wrote:
> Il 03/11/2010 18:03, Daniele Varrazzo ha scritto:
>>
>> Cioè il file non viene scritto, non che non viene letto? Scusa, ma io
>> non
>> riesco a seguirti bene: prova a spiegare passo passo cosa fanno i tuoi
>> programmi e che errore avviene...
>>
>> Tieni anche conto che non so cosa sia un codice EIA/ISO (quanto è
lungo?
>> che set di caratteri?) e che voglia dire CNC (ok, ho googlato e ora lo
>> so,
>> ma questa non è una lista di esperti di processi industriali: se corri
>> troppo ci lasci dietro ;) quindi non ho ancora capiro quando dici
>> "100MB" a
>> cosa ti riferisci (hai fatto n. stringhe * lunghezza stringhe? è un
>> file?
>> ecc...)
>>
> Non ti offendere se non ti rispondo subito ma sono preso male perciò 
> sono quì a formulare altre domande:
> 1. una lista di 1.000.000 di elementi dove ogni elemento è una stringa 
> di 20 caratteri è più pesante di un unica stringa di 20.000.000 di 
> caratteri?

Sì, c'è un pò di overhead in più, ma non credo tantissimo. Potrebbero
essere 8 byte per stringa, ma anche se l'occupazione fosse, metti, il
doppio, il tuo computer dovrebbe essere in grado di gestire 200 MB...

> 2. la mega lista di cui sopra vado ad aggiungerla ad un oggetto Queue, 
> che possa essere questo a generare l'eccezzione? E se gli aggiungo la 
> grossa stringa anzichè la lista che sia lo stesso?

Non credo: la Queue aggiunge solo un riferimento alla lista, non la copia
(nota che non hai detto quale istruzione genera l'eccezione...). Beh, a
meno che non sia una Queue di multiprocessing, di cui non conosco bene il
ciclo di vita ma mi aspetto che a un certo punto faccia un pickle di tutto
e quindi si prenda una bella fetta di memoria...

-- 
Daniele Varrazzo - Develer S.r.l. 
http://www.develer.com


Maggiori informazioni sulla lista Python