Domanda

Qualcuno sa se Python's shelve Il modulo utilizza IO mappato a memoria?

Forse questa domanda è un po 'fuorviante. Mi rendo conto shelve Utilizza un modulo in stile DBM sottostante per fare il suo lavoro sporco. Quali sono le possibilità che il modulo sottostante usi mmap?

Sto prototipando un dataStore e mentre mi rendo conto che l'ottimizzazione prematura è generalmente disapprovata, questo potrebbe davvero aiutarmi a capire i compromessi coinvolti nel mio design.

È stato utile?

Soluzione

Esistente dbm Le implementazioni nella libreria standard Python usano tutte l'I/O "normale", non la mappatura della memoria. Dovrai codificare il tuo dbmISH Implementation con mappatura della memoria e integrala con shelve (direttamente o, più produttivo, attraverso anydbm).

Altri suggerimenti

Non sono sicuro di ciò che stai cercando di imparare ponendo questa domanda, dal momento che sembri già conoscere la risposta: dipende dall'uso del negozio DBM effettivo. Alcuni di loro useranno MMAP - mi aspetto che tutto tranne DumbDBM usi MMAP - ma e allora? Il sovraccarico di Shelve non è quasi certamente nella scelta MMAP-veo-file, ma nell'operazione di decapaggio. Non è possibile mMap il file DBM in modo sensibile in entrambi i casi, poiché il modulo DBM potrebbe avere il suo blocco fantasia (e potrebbe non essere comunque un singolo file, come quando utilizza BSDDB.)

Se stai solo cercando ispirazione per il tuo DataStore, beh, non guardare Shelve, poiché tutto ciò che fa è il sottaceto e il passaggio per un altro dataStore.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top