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