Il modulo pickle sembra utilizzare i caratteri di escape della stringa durante il decapaggio; questo diventa inefficiente per es. su array numpy. Considerare le seguentiun modo più efficiente di mettere sotto aceto una stringa
z = numpy.zeros(1000, numpy.uint8)
len(z.dumps())
len(cPickle.dumps(z.dumps()))
Le lunghezze sono rispettivamente 1133 e 4249 caratteri caratteri.
z.dumps() rivela qualcosa come "\ x00 \ x00" (zeri effettivi in stringa), ma pickle sembra utilizzare la funzione repr() della stringa, restituendo "'\ x00 \ x00'" (essendo gli zeri ascii zeri).
cioè ("0" in z.dumps() == false) e ("0" in cPickle.dumps (z.dumps()) == true)
È necessario aggiungere una domanda specifica al proprio post ri. –
Cosa vuoi serializzare una stringa Python o una serie numerica di byte? – jfs
dovrebbe essere len (cPickle.dumps (z)) – vartec