2012-07-06 18 views
5

Sto analizzando centinaia di milioni di record JSON e memorizzando i componenti rilevanti da ciascuno in un dict. Il problema è che a causa del numero di record che sto elaborando, Python è costretto ad aumentare le dimensioni della tabella hash sottostante di dict più volte. Ciò si traduce in un MOLTO di dati che devono essere riutilizzati. L'enorme quantità di rilocalizzazione sembra costare molto tempo. Pertanto, mi chiedo se c'è un modo per impostare una dimensione minima sulla tabella hash sottostante di dict in modo che il numero di operazioni di ridimensionamento sia ridotto al minimo.python dict set min_size

Ho letto this sull'ottimizzazione pitone di dict, da una risposta su this question, ma non riesco a trovare il modo di cambiare la dimensione iniziale di 's un dict tabella hash. Se qualcuno mi può aiutare con questo, sarei molto grato.

Grazie

risposta

2

Se si esegue questa operazione:

a = dict.fromkeys(range(n)) 

forzerà la dimensione dizionario per accogliere oggetti n. Dopo è abbastanza veloce, ma ci vogliono 3 secondi per farlo.

+0

Certo, questo mi fa la taglia giusta. Ma non mi dà le chiavi giuste. Dovrei cancellare tutte le 'n' molte chiavi e ripopolare con quelle corrette, mentre elaboro ogni record JSON. Non sarebbe lento? – inspectorG4dget

+0

Dovrebbe aiutare con la velocità. Scrivi un piccolo test che lo faccia. Creerà un dettato di una dimensione nota con tutti i valori che hanno come valore predefinito Nessuno o un valore di tua scelta –

+0

Non esiste una soluzione più ordinata rispetto alla struttura artificiale che genera la struttura dei dati con i valori indesiderati? :( – comiventor