Ich habe eine folgende Problem, gibt es eine Funktion ist eine große Datei (wenige Mb) zu lesen, sieht der Inhalt wie:Funktion ist langsamer in separaten Datei
0x05 0x00 0x00 0x00 0xCF 0x00 0x00 0x00 ; ..........
0xCF 0x00 0x00 0x00 0x22 0x00 0x00 0x00 ; ......"...
0x51 0x84 0x07 0x00 0x02 0x00 0x01 0x00 ; ..Q.......
Meine Funktion nur die Hex-Werte zu lesen hat und ";" mit folgenden Zeichen bis zum Ende der Zeile.
Daten aus der ersten Zeile, was ich brauchen, ist
"0x05 0x00 0x00 0x00 0xCF 0x00 0x00 0x00"
ich zwei Methoden versucht, ist man mit einer separaten Datei mit dieser Funktion
def ReadFileAsList(fileName):
fileName = "2Output.txt"
fileContentStr = ""
with open(fileName,'r') as f:
for line in f:
fileContentStr += line.split(';')[0]
fileContentList = fileContentStr.split()
return fileContentList
und das zweite Verfahren, wenn diese Linie ist direkt in meiner Haupt-Py-Datei
fileName = "2Output.txt"
fileContentStr = ""
with open(fileName,'r') as f:
for line in f:
fileContentStr += line.split(';')[0]
fileContentList = fileContentStr.split()
Die zweite Methode ist sehr schnell, die erste (mit der separaten Funktion in einer separaten Datei) ist sehr langsam, was fehlt mir? Danke für jeden Hinweis
In Abwesenheit von irgendwelchen anderen Schuldigen, mir etwas sagt * vielleicht * werden verpassten die Optimierung CPython tut, wenn Strings verketten mit '+ = 'in der Funktionsfall. Ich erinnere mich nicht an die tatsächlichen Umstände, die dazu führen, dass die Optimierung deaktiviert wird. Versuchen Sie, eine Liste der Zeichenfolgen zu erstellen, die diese zurückgeben, um zu sehen, ob der Unterschied noch vorhanden ist. –
@JimFasarakisHilliard Es half, danke –
Unter Ihnen 'mit offenen' Zeile, könnten Sie eine Liste von getrimmten Linien mit einem Listenverständnis wie' fileContentList = [line.split (';') [0] für line in f] 'erstellen –