parallel: 一個簡單的並行執行Go迴圈的庫

banq發表於2022-04-01

使用最新泛型,例如:對每個元素呼叫一次指定的函式,請注意,執行順序是隨機的:

input := []int{1, 2, 3, 4, 5, 6}

parallel.ForEach(input, func(x int) {
  fmt.Printf("Processing %d\n", x)
})

// Output:

// Processing 6
// Processing 3
// Processing 4
// Processing 5
// Processing 1
// Processing 2


使用Map:對每個元素呼叫一次給定的函式,並返回一個帶有其結果的新片斷。請注意,輸出片斷的元素順序與輸入片斷相同,並且被保留下來,但執行順序是隨機的。

input := []int{1, 2, 3, 4, 5, 6}

result := parallel.Map(input, func(x int) int {
  fmt.Printf("Processing %d\n", x)
  return x * 2
})

fmt.Printf("The final result is %v\n", result)

// Output:

// Processing 6
// Processing 1
// Processing 2
// Processing 3
// Processing 4
// Processing 5
// The final result is [2 4 6 8 10 12]

 

相關文章