GPars处理巨大的列表,在其部分上执行修复大小并行化

时间:2012-07-05 13:00:06

标签: arrays parallel-processing gpars

我正在寻找GPars功能,它允许在顺序执行的并行子任务集部分中分离大任务。

即。迭代 K 的数组大小,执行并行任务块的顺序分配,每个块的大小为 threadCount

换句话说,不要在第一次迭代数组并立即提交所有任务,而是在前一个块准备就绪时使用分页顺序执行赋值(阻止OOM)。

类似下面的代码,但不是首先列出页面和提交任务,而是必须按顺序处理页面。

myHugeList.getNextPage().each { withPool(threadCount) { Closure.callAsync().get() } }

谢谢, Yefym

1 个答案:

答案 0 :(得分:0)

您可能正在寻找以下内容:

withPool(numOfThreads){     for(myHugeList.splitIntoPages中的entriesInPage){         resultPages<< entriesInPage.collectParallel(myClosure)     } } 缺点是每次迭代都会等待前一次迭代完成,可能会使一些线程未被充分利用。

其中一个选择可能是一组演员从调度员那里拉出任务,调度员负责管理myHugeList。