So verarbeiten Sie große Dateien effizient in Golang

藏色散人
Freigeben: 2021-05-12 11:52:57
nach vorne
2312 Leute haben es durchsucht

In der folgenden Tutorial-Kolumne erfahren Sie, wie Sie große Dateien in Golang effizient verarbeiten können. Ich hoffe, dass es für Freunde, die es benötigen, hilfreich sein wird! Pandas verwenden, um große Dateien in Blöcken zu verarbeitenProblem: Heute bin ich bei der Verarbeitung von Kuaishou-Benutzerdaten auf einen TXT-Text von fast 600 MB gestoßen, als ich ihn mit sublime geöffnet habe, um ihn zu lesen. und es dauerte ungefähr genauso lange. Nach fast 2 Minuten öffnete ich es schließlich und fand fast 30 Millionen Datenzeilen. Es öffnet sich gerade, ich weiß nicht, wie schwer es wäre, damit umzugehen.

Lösung: Ich habe die Dokumentation durchgesehen und festgestellt, dass diese Art von Funktion zum Lesen von Dateien zwei Parameter hat:

chunksize

,

iterator

Das Prinzip besteht darin, dass die Dateidaten nicht auf einmal, sondern mehrfach in den Speicher eingelesen werden Zeiten. 1. Geben Sie chunksize an, um Dateien in Blöcken zu lesen.

read_csv und read_table verfügen über einen chunksize-Parameter, um eine Blockgröße anzugeben (wie viele Zeilen jedes Mal gelesen werden sollen) und ein iterierbares TextFileReader-Objekt zurückzugeben.

table=pd.read_table(path+'kuaishou.txt',sep='t',chunksize=1000000)
for df in table:
    对df处理
    #如df.drop(columns=['page','video_id'],axis=1,inplace=True)
    #print(type(df),df.shape)打印看一下信息
Nach dem Login kopieren

Ich habe die Datei hier noch einmal aufgeteilt und zur separaten Verarbeitung in mehrere Unterdateien aufgeteilt (ja, to_csv hat auch den Chunksize-Parameter)

2. Geben Sie iterator=True an

iterator=True gibt auch ein TextFileReader-Objekt zurück

reader = pd.read_table('tmp.sv', sep='t', iterator=True)
df=reader.get_chunk(10000)
#通过get_chunk(size),返回一个size行的块
#接着同样可以对df处理
Nach dem Login kopieren

Schauen Sie sich einfach die Pandas-Dokumentation zu diesem Aspekt an.

Das obige ist der detaillierte Inhalt vonSo verarbeiten Sie große Dateien effizient in Golang. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:csdn.net
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage