Situation: Vergleichen von Zeichenfolgen in DateiA mit vordefinierten Zeichenfolgen in DateiB. Beispiel für die Funktion in meinem Code:Schnellste Möglichkeit zum Vergleichen von Strings Python
string = open('fileA', 'r')
stringlist = open('fileB', 'r')
//compare the strings
for i in string:
for j in stringlist:
if i == j:
print("Same String found!" + i + " " + j)
Problem: In meinem aktuellen Programm, string
mehr als 200 Strings enthalten, während stringlist
eine Datei mit mehr als 50.000 Strings ist. Die geschachtelte for-Schleife ist, wie ich gelesen habe, langsam als Vergleichsfunktion.
Frage: Was ist der schnellste Weg, um den Inhalt beider Dateien zu vergleichen?
Weitere Informationen 1: Beide Dateien sind CSV-Dateien und werden in meinem Programm als CSV-Trennzeichen geöffnet.
Weitere Informationen 2: Strings sind MD5-Hashes (32 Zeichen).
Weitere Informationen 3: Ich bin offen für andere Möglichkeiten, die Zeichenfolgen zu speichern, d. H. Vergleichen Sie die Zeichenfolgen on-the-fly, anstatt sie in Datei A zu speichern.
Weitere Informationen 4: Ich bin auch offen für andere Methoden oder Module, die ich verwenden kann (z. B. Threading/Parallelverarbeitung) - Geschwindigkeit ist hier der Schlüssel.
Ich erzeuge nur 'strings'. 'stringlist' ist eine Datei, die aus dem Internet heruntergeladen wird. Ich habe Pläne, es in RAM für vermeintlich schneller Zugriff zu laden –
Dann speichern Sie 'string' nicht in Datei und laden' stringlist' in den Speicher wie Sie sagten, das ist optimal. solange die 'stringlist'-Datei nicht zu groß ist, damit Ihr Speicher eine letzte Frage enthält: –
So kann ich Threading für optimale Geschwindigkeit verwenden: thread1 = // hash; thread2 = // vergleichen; // thread1 an thread2 übergeben; // thread2 vergleicht, während thread1 eine neue Datei hasht –