Fortsetzung von Letzte Geschichte Ich habe die Leistung verglichen, wenn ich numpy.array.T verwendet habe, was ich unangenehm ausprobiert habe, und wenn ich den Zip verwendet habe, der Kommentare erhalten hat.
Die Eingaben sind 1M.csv mit 1000 Zeilen und 1000 Spalten und 25M.csv mit 5000 Zeilen und 5000 Spalten.
Methode 1
import sys
import numpy
def csvt_1(fnin, fnout):
fin = open(fnin, "r")
fout = open(fnout, "w")
for line in numpy.array([s.strip('\n').split(',') for s in fin]).T:
fout.write(",".join(line) + "\n")
fin.close()
fout.close()
Methode 2
import sys
def csvt_2(fnin, fnout):
fin = open(fnin, "r")
fout = open(fnout, "w")
for line in zip(*[s.strip('\n').split(',') for s in fin]):
fout.write(','.join(line) + '\n')
fin.close()
fout.close()
Messergebnis (% Zeit% in IPython ausgeführt) Methode 1 1M.csv: ungefähr 500 ms 25M.csv: ungefähr 14s Methode 2 1M.csv: ungefähr 250 ms 25M.csv: ungefähr 11s
Ich habe es mehrmals gemessen, aber es ist ungefähr das gleiche. zip gewinnt. Was ist das? Ich frage mich, ob zip für die Bewertung von Verzögerungen gut funktioniert. Auf jeden Fall wurden aussagekräftige Ergebnisse erzielt.
Die Daten, über die mein Kollege gesprochen hat, haben mich veranlasst, diesen Code auszuprobieren. Sie sind ungefähr 40 GB groß. Dafür schien es, dass diese Methode nicht verwendet werden konnte, also schrieb ich eine Anwendung in C # separat und löste sie.
Recommended Posts