J'ai ~ 200K propriétés nommées et ~ 25K fichiers. J'extrais si les propriétés tiennent ou non pour chaque fichier utilisant Python comme un ensemble de propriétés qui tiennent, un ensemble pour chaque fichier.Hash + mappage ou index + mappage pour condenser l'utilisation des chaînes
Pour effectuer cette extraction, je pourrais exécuter des centaines de scripts d'extraction python individuels sur une batterie de calcul, en parallèle. Chacun laissant derrière lui une représentation de l'extraction de l'ensemble de chacun des fichiers.
Un traitement supplémentaire implique la lecture de ces ensembles 20K et le traitement des données accumulées. pour générer un rapport sur cet ensemble de fichiers/propriétés. Un problème que j'ai, c'est que si je stocke l'ensemble extrait en tant que texte alors les longues chaînes de nom de propriété et de nom de fichier seront répétées gaspiller de l'espace disque et augmenter le temps d'analyse. Je pensais à créer un index central des noms de propriétés triés et à enregistrer simplement l'index - même pour les noms de fichiers, probablement des fichiers .py à importer.
Une alternative à l'utilisation d'un index dans la liste de noms triée serait d'utiliser str. hash() en tant qu'index ce qui signifierait probablement un traitement plus rapide, mais je suis inquiet de la possibilité de deux chaînes inégales se terminant par la même hachage() valeur. Cela pourrait-il arriver?
J'utiliserais le même exécutable Python et la même version de système d'exploitation sur toutes les machines.
Le point entier d'un hachage est que vous le calculez à partir de la valeur, et que le hachage pour une valeur donnée ne change jamais. Vous ne pouvez pas continuer à changer le hachage jusqu'à ce qu'il ne se heurte pas. –
Vous pouvez continuer à changer la fonction de hachage jusqu'à ce que les valeurs que vous êtes en hachage ne se chevauchent jamais et demander ensuite à tous les processus distribués d'utiliser cette fonction de hachage particulière. C'est ce qu'on appelle le hachage parfait; Je pense que c'est (ou du moins était) utilisé dans certains compilateurs pour compiler raisonnablement d'énormes déclarations de "cas". – ondra
Il s'agit donc d'un hachage parfait ou d'un index? Je suppose que je vais coder les deux et voir ce qui semble le mieux, alors. – Paddy3118