我有一个包含大约 210 万个日志字符串的切片,我想创建一个切片,其中的字符串尽可能均匀分布。
这是我到目前为止所拥有的:
// logs is a slice with ~2.1 million strings in it.
var divided = make([][]string, 0)
NumCPU := runtime.NumCPU()
ChunkSize := len(logs) / NumCPU
for i := 0; i < NumCPU; i++ {
temp := make([]string, 0)
idx := i * ChunkSize
end := i * ChunkSize + ChunkSize
for x := range logs[idx:end] {
temp = append(temp, logs[x])
}
if i == NumCPU {
for x := range logs[idx:] {
temp = append(temp, logs[x])
}
}
divided = append(divided, temp)
}
该idx := i * ChunkSize会给我目前的“块启动”为logs索引,end := i * ChunkSize + ChunkSize会给我“块结束”,或该块的范围的结束。我找不到任何关于如何在 Go 中分块/拆分切片或在有限范围内迭代的文档或示例,所以这就是我想出的。但是,它只会多次复制第一个块,因此它不起作用。
我如何(尽可能均匀地)在 Go 中分块?
海绵宝宝撒
BIG阳
泛舟湖上清波郎朗
相关分类