Qui consomme moin que walk?

L'auteur de ce sujet a trouvé une solution à son problème.
Staff
Auteur du sujet

Bonjour,

je travaille en ce moment sur pas mal de script qui consistent très souvent à :

  • lister des fichier dans des sous-dossiers
  • parcourir ces fichiers, les ouvrir
  • trouver une information clef à l'intérieur

à cause des sous-dossier, pour simplifier mon programme, j'utilise os.walk.

Seul problème : je dois lister beaucoup de fichiers, vraiment beaucoup.

du coup, un regard sur sudo iotop me dit :

log iotop

J'ai bien pensé à faire un subprocess qui exécute find mon_dossier_racine -type -f mais j'ai un peu peur pour la conso mémoire mais a priori c'est sur ça que je me dirige.

Y existe-t-il une autre solution "full python"?

+0 -0

Je ne comprend pas bien ce que tu espère gagner avec un sous processus, le nombre d’accès disque sera toujours le même peu importe le process qui les réalisent.

La répétition est la base de l’enseignement. — ☮ ♡

+0 -0
Staff

Du coup ça nous donne une solution temporaire pour Python < 3.5, qui sera intégrée à la lib standard dans la version qui va sortir dans quelques mois : https://pypi.python.org/pypi/scandir .

PS : Par ailleurs je pense pas qu'une solution à base de subprocess.Popen soit si consommatrice que ça en mémoire. En principe tu peux consommer la sortie de ta commande find au fur et à mesure que celle-ci est produite, ligne par ligne, sans être obligé de tout stocker en mémoire.

Dans tous les cas, je me pencherais en premier lieu vers scandir, parce que c'est la solution la plus pythonique.

Édité par nohar

I was a llama before it was cool

+2 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte