Split
如何使用多個執行緒將文件拆分為多個文件?
所以我有一個 100GB 的文本文件,我想把它分成 10000 個文件。我曾經用類似的方法來完成這樣的任務:
split -l <number of lines> -d --additional-suffix=.txt bigfile small_files_prefix
但是我試圖用這個來做到這一點,我監控了我的系統並意識到它沒有使用太多的記憶體或 CPU,所以我意識到它只是用一個執行緒從頭到尾讀取文件。
是否有任何低級(或非常高性能)的工具可以用多個執行緒完成這樣的任務。
如果有必要,我什至更願意複製文件,如果可能更快的話,我會利用我的多個核心(我不這麼認為!)。
即使使用 SSD,拆分文件的瓶頸也是 I/O。擁有多個程序/執行緒不會獲得性能並且通常會慢得多。
此外,如果您只想在換行符上拆分,那麼事先並不清楚每個執行緒必須從哪裡複製到哪裡。您可能必須為此編寫一個特殊工具。
如果需要其他操作(例如拆分和壓縮),情況可能會有所不同。在這種情況下,使用多個核心可能會有所幫助,但 I/O 不是瓶頸(取決於驅動器和 CPU 速度)。