![](/img/trans.png)
[英]Importing a 30GB flat text file over internet to local file system using multiple connection to that flat file?
[英]Reading 30GB file using multithreading
我試圖讀取一個30GB(2500萬行)的巨大文件的文件。 我想寫一個代碼,它將創建一個線程池,每個線程將並行讀取1000行(第一個線程將讀取前1000行,第二個線程將讀取下一個1000,依此類推)。 我已經閱讀了整個文件並創建了線程池但是現在我被困住了,我怎么能確保每個線程只讀取1000行並且還跟蹤已讀取的行號,以便下一個線程不必讀取那些線。
答:如果它是可加入的,則所有線程的行數大致相等,您可以:
B.如果所有線程必須具有完全相同的行數,即1000行,您可以:
方法A讀取文件1次。 方法B讀取文件2次。
使用方法A或B,您可以讓所有線程並行處理文件(轉換,提取,清理..)。 但是如果處理速度非常快,那么界限就是磁盤速度。 然后你的應用程序是IO綁定的。 您應該只有一個線程讀取文件並按順序進行處理。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.