Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Go 将一个文件分成若干块_Go_Unix_Split_Parallel Processing - Fatal编程技术网

Go 将一个文件分成若干块

Go 将一个文件分成若干块,go,unix,split,parallel-processing,Go,Unix,Split,Parallel Processing,假设我们有一个100k行或~2gB的文件,我们想把它分成10个块,每个块10k行,这样这些块就可以并行处理。有没有办法在10个块的起始行中创建指针,而不需要遍历整个文件?我在考虑如何根据文件大小划分文件,以便每200mB创建一个指针。这是否可行 当然可以。但你需要做出一些假设,并接受你的数据块并不精确 假设一个标准的线长度,或者扫描几行并测量它。然后你把它乘以你想要的行数,希望这是一个很好的估计 或者,如果只需要10个块,则取文件大小除以10 因此,您可以使用lseek和read、pread或m

假设我们有一个100k行或~2gB的文件,我们想把它分成10个块,每个块10k行,这样这些块就可以并行处理。有没有办法在10个块的起始行中创建指针,而不需要遍历整个文件?我在考虑如何根据文件大小划分文件,以便每200mB创建一个指针。这是否可行

当然可以。但你需要做出一些假设,并接受你的数据块并不精确

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

或者,如果只需要10个块,则取文件大小除以10

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

除非你真的数到每一行,否则就不会有精确的行数。但它将非常接近

我很无聊,也很好奇,看看这个: