IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Comparaison de tres grandes listes


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2016
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Pologne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2016
    Messages : 26
    Par défaut Comparaison de tres grandes listes
    Bonjour,

    Je me demande quelle est la meilleure solution pour le probleme ci-dessous:

    Nous avons deux tres grandes listes de fichiers. Chaque liste est sous forme de fichier texte, chaque ligne du fichier representant le chemin d'acces a un fichier.
    Il s'agit de trouver les lignes qui apparaissent dans chaque fichier, autrement dit, trouver les doublons. Le probleme serait trivial si ce n'est le grand nombre fichiers: Chaque liste possede environ 35 millions de fichiers, soit un nombre total de plus de 70 millions de fichiers et chaque liste pese environ 12Go.

    Mettre tout ca dans une liste et faire une comparaison bete et simple prendra des jours et des jours....

    Quelqu'un a un idee ?

    Merci d'avance

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    Citation Envoyé par JacekB Voir le message
    Quelqu'un a un idee ?
    Ce n'est pas une question de programmation mais de construction d'une solution ou l'essentiel sera dans la représentation des données et/ou du choix d'un modèle de données (et d'une base de données) qui répondait au besoin.
    Imaginez 2 tables avec un schéma comme (path, linenb, md5sum, content) i.e. pour chaque fichier (dont on a le path) et chacune des lignes on stocke le numéro de ligne, son checksum MD5 et son contenu. Ce que vous voulez c'est l'ensemble des lignes des deux tables qui ont même checksum et même contenu.
    Ce n'est peut être pas ce qu'il faut faire, c'est juste pour vous suggérer que Python n'est pas le bon forum pour trouver avec quel BDD, modèle de données construire la solution...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 15
    Par défaut
    Salut,

    En python sur une machine perso : passer par un arbre lexicographique (un genre de BST). Pour chaque ligne du fichier on l'insert dans l'arbre. Le temps d'insertion/recherche y est en O(log(n)) contrairement à une recherche naïve dans une liste O(n).
    Il y a peut être encore moyen d’accélérer le parcours de l'arbre en manipulant un hash de la ligne et non la ligne complète.
    Si le parcours du 2e fichier consiste juste à regarder dans l'arbre du 1er fichier il y a moyen de rajouter du parallélisme.
    Passer par un langage compiler feras gagner du temps (python est certes rapide mais bien moins que du compiler).

    Je suis pas certain qu'un bdd externe sur une machine perso accélère vraiment le process.

  4. #4
    Membre éclairé Avatar de nekcorp
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2006
    Messages : 592
    Par défaut
    Pour traiter des gros volumes de données le temps d'exécution dépendra dans un premiers temps de l'algorithme utilisé ensuite interviendra la puissance de la machine.

    Ensuite pour gagner en efficacité il est toujours possible de paralléliser les tâches en python et éventuellement si tu es équipée d'une carte NVIDIA utiliser la librairie CUDA qui permet d'utiliser les processeurs de la carte graphique.

Discussions similaires

  1. manipuler de grandes listes
    Par yarf dans le forum Langage
    Réponses: 7
    Dernier message: 12/02/2007, 16h45
  2. gerer des tres grand nombres
    Par Lorenzo77 dans le forum Delphi
    Réponses: 3
    Dernier message: 10/06/2006, 20h19
  3. Taille de tableau tres tres grand (BCB6)
    Par cquadjul dans le forum C++Builder
    Réponses: 7
    Dernier message: 27/04/2006, 08h48
  4. Texte très grand
    Par jobe dans le forum Mise en forme
    Réponses: 2
    Dernier message: 15/01/2006, 20h45
  5. decalage à gauche sur une tres grand tableau de char
    Par petitours dans le forum C++Builder
    Réponses: 10
    Dernier message: 14/07/2005, 22h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo