一个关于多进程分块读写大文件的问题

问题是这样的:
有一个比较大的文件file1 , 它的内容格式是一行一行的 , 比如

1|123|abc
2|212|lca
3|123|asd
x
x
x

现在,我想用多个进程同时分块读取文件 ,分别处理 。 那么怎么做才能保证每个进程分到的块正好是完整的一行。

刚刚接触这一块的东西,还望指导。

阅读 7.8k
3 个回答

如果是为了提高效率,分进程读是没有什么意义的,因为这个快不快主要取决于磁盘的IO,如果你为了分行还需要进行特殊处理的话,不可避免的大量随机读。还不如用一个进程顺序读入,然后切割分给n个进程进行处理。说实话如果处理逻辑不是很复杂的话,提高IO的效率比搞几个进程好。提高IO的效率还是多用用操作系统的特性吧。`

分块后,除了第一个进程外,其它进程从中间某个地方向后读到换行符,然后再一行行地读并处理。

不过,你的文件存储在什么设备上?你是处理每一行数据会花很多时间,还是觉得多进程读同一文件会比单进程更快?

得到文件大小, 再均匀分配给每个进程....设置偏移和大小就行

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题