Accelérer mise à jour dictionnaire ?

Le
Méta-MCI \(MVP\)
Bonjour !


Soit un dictionnaire, déjà existant, dans lequel on veut ajouter des
éléments, à partir de deux listes (clefs et valeurs).
J'utilise :
elemid.update( zip( tclefs, tvaleurs))
Seulement, cette méthode est lente. Auriez-vous une idée, pour accélérer
le traitement ?

Merci d'avance, pour toute idée de solution.

@-salutations
--
Michel Claveau
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Bruno Desthuilliers
Le #18644921
Méta-MCI (MVP) a écrit :
Bonjour !


Soit un dictionnaire, déjà existant, dans lequel on veut ajouter des
éléments, à partir de deux listes (clefs et valeurs).
J'utilise :
elemid.update( zip( tclefs, tvaleurs))
Seulement, cette méthode est lente. Auriez-vous une idée, pour accélérer
le traitement ?



Oui: commencer par définir ce qui est lent: l'update, ou le zip.
Bruno Desthuilliers
Le #18644911
Bruno Desthuilliers a écrit :
Méta-MCI (MVP) a écrit :
Bonjour !


Soit un dictionnaire, déjà existant, dans lequel on veut ajouter des
éléments, à partir de deux listes (clefs et valeurs).
J'utilise :
elemid.update( zip( tclefs, tvaleurs))
Seulement, cette méthode est lente. Auriez-vous une idée, pour
accélérer le traitement ?



Oui: commencer par définir ce qui est lent: l'update, ou le zip.



s/définir/déterminer/, of course
Michel Claveau - NoSpam SVP ; merci
Le #18649501
Bonjour !

En me forçant à chercher, tu m'as permis de trouver une explication, à
défaut d'une solution.
C'est un problème de transtypage. En fait, une des deux listes est, à
l'origine, une collection d'objets Javascript. Python transtype cela en
une liste, pour les besoins du ZIP. Et ce transtypage prend environ 80 %
du temps.

Je vais donc chercher dans la direction du transtypage.

Merci pour l'aiguillon, et @+
--
Michel Claveau


PS : les temps que je trouve "longs", c'est 0,7 s pour 1000 éléments.
Christophe
Le #18649851
Michel Claveau - NoSpam SVP ; merci a écrit :
Bonjour !

En me forçant à chercher, tu m'as permis de trouver une explication, à
défaut d'une solution.
C'est un problème de transtypage. En fait, une des deux listes est, à
l'origine, une collection d'objets Javascript. Python transtype cela en
une liste, pour les besoins du ZIP. Et ce transtypage prend environ 80 %
du temps.

Je vais donc chercher dans la direction du transtypage.



En utilisant itertools.izip à la place de zip peut-être ? Je ne vois
rien d'autre à faire ici.
Méta-MCI \(MVP\)
Le #18650411
Salut !

J'ai essayé izip. Mais, la conversion de la collection d'objets en un
itérable prend le même temps.
J'ai essayé aussi les listes en intention, un FOR, etc. sans de
meilleurs résultats.

D'après ce que j'ai compris (déduit), tout adressage d'un élément de la
collection est traduit en un call de quelque chose.
Si je ne trouve pas une méthode intégrée et rapide, je modifierai
l'architecture de gestion de ce truc, pour utiliser une évaluation
paresseuse (lazy). Ainsi, les temps ne seront consommés qu'au besoin.

@+

MCI
Publicité
Poster une réponse
Anonyme