我找到了有关如何使用withPool的示例。它说我只需要在Groovy的方法(如Parallel)中添加collect, find, each一词,并将其放入withPool中,它就会并行执行代码。

import static groovyx.gpars.GParsPool.withPool

list = 1..1000000

withPool{
    squares = list.collectParallel { it * it}
}
println squares


有没有机会检查它是否真的平行?
我用相同的代码尝试了基准测试,但是顺序方式
而平行的方式要慢得多。

最佳答案

不知道您的意思是“但顺​​序和并行方式要慢得多” ...

这将并行运行,但是对于这个简单的示例,将作业触发到其他处理器并处理结果的顺序所产生的额外费用可能要比仅仅乘以一些数字花费的时间更长。

对于一个简单的示例,它可以正常工作,您可以执行以下操作:

import static groovyx.gpars.GParsPool.withPool

list = [ 2, 2, 2, 2, 2 ]

withPool{
    result = list.collectParallel {
        Thread.sleep( it * 1000 )
        it
    }
}
println result


因此结果应该是[2,2,2,2,2],但是collectParallel应该在少于串行collect版本期望的10秒内完成

显然,这取决于您拥有多个核心;-)

10-08 18:09