Heim >Backend-Entwicklung >Golang >So verarbeiten Sie große Dateien effizient in Golang

So verarbeiten Sie große Dateien effizient in Golang

藏色散人
藏色散人nach vorne
2021-05-12 11:52:442336Durchsuche

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)打印看一下信息

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处理

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen