J'ai besoin de charger (dé-sérialiser) une liste d'entiers précalculés à partir d'un fichier dans un script Python (dans une liste Python). La liste est grande (jusqu'à des millions d'objets), et je peux choisir le format dans lequel je stocke, tant que le chargement est le plus rapide.Sérialisation de la liste Python - méthode la plus rapide
Quelle est la méthode la plus rapide, et pourquoi?
- En utilisant
import
sur un fichier .py qui contient simplement la liste affectée à une variable - En utilisant
load
de »
- autre méthode (peut-être
numpy
?)
cPickle
En outre, comment peut-on comparer ces choses de manière fiable?
Addendum: mesure cela est fiable difficile, car import
est mis en cache de sorte qu'il ne peut pas être exécuté plusieurs fois dans un test. Le chargement avec le pickle devient également plus rapide après la première fois, probablement parce que le système d'exploitation précâblait les pages. Le chargement de 1 million de numéros avec cPickle
prend 1,1 seconde la première fois et 0,2 seconde lors des exécutions suivantes du script. Intuitivement, je pense que cPickle
devrait être plus rapide, mais j'apprécierais les chiffres (c'est assez difficile à mesurer, je pense).
Et oui, il est important pour moi que cela fonctionne rapidement.
Merci
Est-ce vraiment la partie lente de votre code? À quelle fréquence allez-vous charger le fichier? –
Avez-vous essayé un de ces produits? Quelles mesures avez-vous en ce moment? –
Pour ce que cela vaut, vous pouvez éviter les problèmes d'importation en utilisant "execfile()" ... – gahooa