Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Accelérer mise à jour dictionnaire ?

5 réponses
Avatar
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

5 réponses

Avatar
Bruno Desthuilliers
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.
Avatar
Bruno Desthuilliers
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
Avatar
Michel Claveau - NoSpam SVP ; merci
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.
Avatar
Christophe
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.
Avatar
Méta-MCI \(MVP\)
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