将文件分成几个块

假设我们有一个 100k 行或约 2gB 的文件,我们希望将它分成 10 个块,每个块 10k 行,以便可以并行处理这些块。有什么方法可以在 10 个块的每一个的起始行中创建指针,而无需遍历整个文件?我正在考虑以某种方式根据文件大小划分文件,以便每 200mB 创建指针。这甚至可行吗?



慕妹3146593
浏览 171回答 1
1回答

呼唤远方

是的当然。但是您需要做出一些假设并接受您的块将不准确。要么假设标准线长,要么扫描几条线并测量它。然后你将它乘以你想要的行数,并希望这是一个很好的估计。或者,如果您只想要 10 个块,则取文件大小并除以 10。因此,您可以使用 lseek 和 read、pread 或 mmap 跳转到文件中的那个点。然后向前扫描,直到找到一行的结尾和下一行的开头。除非您实际计算每一行,否则它不会是精确的行数。但它会非常接近。我很无聊和好奇,所以看看这个:https ://github.com/zlynx/linesection
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go