扫码关注官方订阅号
问题是这样的: 有一个比较大的文件file1 , 它的内容格式是一行一行的 , 比如
1|123|abc 2|212|lca 3|123|asd x x x
现在,我想用多个进程同时分块读取文件 ,分别处理 。 那么怎么做才能保证每个进程分到的块正好是完整的一行。
刚刚接触这一块的东西,还望指导。
欢迎选择我的课程,让我们一起见证您的进步~~
如果是为了提高效率,分进程读是没有什么意义的,因为这个快不快主要取决于磁盘的IO,如果你为了分行还需要进行特殊处理的话,不可避免的大量随机读。还不如用一个进程顺序读入,然后切割分给n个进程进行处理。说实话如果处理逻辑不是很复杂的话,提高IO的效率比搞几个进程好。提高IO的效率还是多用用操作系统的特性吧。`
分块后,除了第一个进程外,其它进程从中间某个地方向后读到换行符,然后再一行行地读并处理。
不过,你的文件存储在什么设备上?你是处理每一行数据会花很多时间,还是觉得多进程读同一文件会比单进程更快?
得到文件大小, 再均匀分配给每个进程....设置偏移和大小就行
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
扫描下载App
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
如果是为了提高效率,分进程读是没有什么意义的,因为这个快不快主要取决于磁盘的IO,如果你为了分行还需要进行特殊处理的话,不可避免的大量随机读。还不如用一个进程顺序读入,然后切割分给n个进程进行处理。说实话如果处理逻辑不是很复杂的话,提高IO的效率比搞几个进程好。提高IO的效率还是多用用操作系统的特性吧。`
分块后,除了第一个进程外,其它进程从中间某个地方向后读到换行符,然后再一行行地读并处理。
不过,你的文件存储在什么设备上?你是处理每一行数据会花很多时间,还是觉得多进程读同一文件会比单进程更快?
得到文件大小, 再均匀分配给每个进程....设置偏移和大小就行