Rechercher : dans
Par :

[Python] Parser XML à optimiser...

Dernière réponse le 21 oct 2004 à 01:01:53 dje-dje, le 13 oct 2004 à 17:13:28 
 Signaler ce message aux modérateurs

Bonjour,

Je me suis amusé à créer un parser en python, pour un fichier xml que je dois incorporer dans une base access. Pour parser ce fichier de 2 megas, il faut 30 secondes à mon PC. Ma collegue a fait un script PHP qui fait ca en moins de 10 secondes 8-|.
Bien que son PC soit un peu plus rapide (J'ai un athlon 2000, et elle un P4 2,8Ghz) je me dit que je pourrais faire mieux...

D'abord êtes vous d'accord sur le principe? (Que c'est long et que ca peut s'améliorer, surtout que des fichiers de 15 Mo seront traités en moyenne)
Ensuite l'utilisation de la classe HTMLParser est elle un bon choix? Devrais-je utiliser les regexp ou les fonctions string à la place?

Avez-vous besoin de détail? (Schema XML, mon code actuel,...)

a+
dje-dje
PS: je suis sur que mon code n'est pas optimisé(je ne connais pas assez python pour ca:-(( ), mais pour l'instant l'objectif était de "faire un truc qui marche"

a+
dje-dje

Il y a 10 types de personne dans le monde,
ceux qui comprennent le binaire et les autres 

Meilleures réponses pour « [Python] Parser XML à optimiser... » dans :
Optimiser Firefox VoirOptimisation avec Haut Débit Si votre ordinateur a un processeur peu puissant Optimiser l'utilisation de la mémoire Logiciel d'optimisation de Firefox J'ai fait une fausse manipulation J'ai créé une valeur/chaîne de trop J'ai mal attribué...
Optimiser / Alléger Vista avec Vista4Expert VoirOptimiser / Alléger Vista ...ou plus exactement rendre Vista supportable. Microsoft Vista a été conçu en prenant en compte le fait que les ordinateurs sont dorénavant plus puissants, possèdent plus de mémoire et peuvent donc supporter des...
Comment optimiser Windows ? VoirVoici quelques astuces qui vous permettront d'optimiser au mieux les ressources de Windows (XP et Vista) afin d'obtenir une utilisation plus agréable ! Notez qu'il faut redémarrer le PC pour que les modifications effectuées soient...
Télécharger DriveImage XML VoirDriveImage XML est un programme permettant de faire des images du système (partitions et lecteurs logiques) à des fins de sauvegarde, à la manière de Norton Ghost. Ce programme permet : De créer des images des lecteurs logiques et des...
PHP - Parser du XML VoirIntroduction à XML PHP permet l'analyse syntaxique (parsage ou parsing en anglais) d'un document XML. Le langage XML (eXtensible Markup Language, traduisez Langage à balises extensibles) est un métalangage, c'est-à-dire un langage permettant de...
Introduction à XML VoirPrésentation de XML XML (entendez eXtensible Markup Language et traduisez Langage à balises étendu, ou Langage à balises extensible) est en quelque sorte un langage HTML amélioré permettant de définir de nouvelles balises. Il s'agit effectivement...
DOM (Document Object Model) et SAX (Simple API for XML) VoirXML permet de définir la structure du document uniquement, ce qui permet d'une part de pouvoir définir séparément la présentation de ce document, d'autre part d'être capable de récupérer les données présentes dans le document pour les...

1

sebsauvage, le 14 oct 2004 à 12:16:21
  • +1

Je ne suis pas un spécialiste du parsing XML, mais il existe plusieurs solutions:

- SAX (l'artillerie lourde)
- DOM
- expressions régulières
- classe customisées allégées


Je ne te recommande pas l'utilisation de HTMLParser, qui n'est pas fait du tout pour parser du XML.
SGMLParser pourrait à la limite convenir, mais c'est un peu lourd à manipuler.

Il existe des parseurs XML allégé plus rapide et plus simples à utiliser que SAX.
http://www.xml.com/pub/a/2004/10/13/py-xml.html

Il existe également pyXML, un package qui contient plusieurs parseurs XML (SAX,DOM,Expat,etc.)
http://pyxml.sourceforge.net/


Voir aussi les articles:
http://www.xml.com/pub/q/pyxml

Répondre à sebsauvage

2

dje-dje, le 19 oct 2004 à 22:55:57

Et bien encore une fois merci de ton aide, car ce n'est pas la premiere fois que tu me depannes sur Python.

J'ai suivi quelques-uns de tes liens et j'ai choisit d'utiliser SAX, car il semble plus adapté aux travaux sur des gros fichiers d'apres ce que j'ai lu.
De plus, les arguments renvoyés par sax différant légèrement (dictionnaire au lieu de list je crois) m'ont obligé à repenser mon algo, et effectivement je dois economiser des operations puisque le niveau de performance semble meilleur que celui de ma collegue (Niark!)
il ne me reste " plus qu'à " gérer les entités ( { ) et prévoir d'utiliser le parser sur une serie de fichier d'un répertoire...

Au fait, pourquoi appelles-tu SAX l'artillerie lourde?

Encore merci!

a+
dje-dje


Il y a 10 types de personne dans le monde,
ceux qui comprennent le binaire et les autres 

Répondre à dje-dje

3

sebsauvage, le 19 oct 2004 à 23:20:58

Au fait, pourquoi appelles-tu SAX l'artillerie lourde?

Parceque bien souvent pour une tâche très précise, on va beaucoup plus vite (aussi bien en développement qu'en temps de traitement) avec des modules "allégés".

Ces modules ne supportent pas toutes les options du XML, mais ils sont généralement plus rapide et plus simples à utiliser.

Répondre à sebsauvage

4

 dje-dje, le 21 oct 2004 à 01:01:53

Merci pour cet eclaircissement.
Je regarderai de ce côté la aussi, au moins par simple curiosité...

a+
dje-dje

Il y a 10 types de personne dans le monde,
ceux qui comprennent le binaire et les autres 

Répondre à dje-dje