我正在尝试读取一个30GB(2500万行)的巨大文件。我想写一个代码,它将创建一个线程池,每个线程将并行读取1000行(第一个线程将读取前1000行,第二个线程将读取下一个1000,依此类推)。 我已经阅读了整个文件并创建了线程池但是现在我被困住了,我怎么能确保每个线程只读取1000行并且还跟踪已读取的行号,以便下一个线程不必读取那些线。
答案 0 :(得分:0)
一个。如果它是可加入的,则所有线程的行数大致相等,您可以:
B中。如果所有线程必须具有完全相同的行数,那么说1000行,您可以:
方法A读取文件1次。方法B读取文件2次。
使用方法A或B,您可以让所有线程并行处理文件(转换,提取,清理......)。但是如果处理速度非常快,那么界限就是磁盘速度。然后你的应用程序是IO绑定的。你应该只有一个线程读取文件并按顺序进行处理。