Pandas msgpack vs pickle
msgpack
dans Pandas est supposé remplacer pickle
.
Par le Pandas docs sur msgpack :
c'est un format binaire portable léger, similaire à JSON binaire, qui est très efficace dans l'espace, et offre de bonnes performances à la fois sur l'écriture (sérialisation) et la lecture (désérialisation).
je trouve, cependant, que son la performance ne semble pas empiler contre pickle.
df = pd.DataFrame(np.random.randn(10000, 100))
>>> %timeit df.to_pickle('test.p')
10 loops, best of 3: 22.4 ms per loop
>>> %timeit df.to_msgpack('test.msg')
10 loops, best of 3: 36.4 ms per loop
>>> %timeit pd.read_pickle('test.p')
100 loops, best of 3: 10.5 ms per loop
>>> %timeit pd.read_msgpack('test.msg')
10 loops, best of 3: 24.6 ms per loop
Question: outre les problèmes de sécurité potentiels avec pickle, quels sont les avantages de msgpack sur pickle? Pickle est-il toujours la méthode privilégiée pour sérialiser les données, ou Existe-t-il actuellement de meilleures solutions de rechange?
15
demandé sur
Alexander
2015-06-04 21:43:54
1 réponses
Cornichon est mieux pour le suivant:
- données numériques ou tout ce qui utilise le protocole buffer (tableaux numpy) (bien que seulement si vous utilisez un
protocol=
assez récent) - Python objets spécifiques comme les classes, les fonctions, etc.. (bien qu'ici vous devriez regarder
cloudpickle
)
MsgPack est meilleur pour les suivants:
- Croix de la langue d'interopérabilité. C'est une alternative à JSON avec quelques améliorations
- la Performance sur les données de texte et des objets Python. C'est un décent facteur plus vite que Pickle à ce sous n'importe quel paramètre.
@Jeff l'a noté ci-dessus ce blog peuvent être d'intérêt
19
répondu
MRocklin
2017-10-26 17:38:37