为了账号安全,请及时绑定邮箱和手机立即绑定

将文件分成几个块

将文件分成几个块

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

1 回答

?
呼唤远方

TA贡献1856条经验 获得超11个赞

是的当然。但是您需要做出一些假设并接受您的块将不准确。

要么假设标准线长,要么扫描几条线并测量它。然后你将它乘以你想要的行数,并希望这是一个很好的估计。

或者,如果您只想要 10 个块,则取文件大小并除以 10。

因此,您可以使用 lseek 和 read、pread 或 mmap 跳转到文件中的那个点。然后向前扫描,直到找到一行的结尾和下一行的开头。

除非您实际计算每一行,否则它不会是精确的行数。但它会非常接近。

我很无聊和好奇,所以看看这个:
https ://github.com/zlynx/linesection


查看完整回答
反对 回复 2022-05-10
  • 1 回答
  • 0 关注
  • 170 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号