繁体   English   中英

批处理任务并并行运行

[英]Batching Tasks and Running them in Parallel

我有一个项目列表,我想遍历每个项目,创建一个任务并启动该任务。 但是,我希望它一次执行10个任务的批处理。

例如,如果我在列表中有100个URL,则我希望它将它们分为10个批次,并循环遍历,从每个批次迭代的10个URL中获取Web响应。

这可能吗?

我正在使用C#5和.NET 4.5。

您可以使用Parallel.For()Parallel.ForEach() ,它们将在多个Task上执行工作。

当您需要精确控制批处理时,可以使用自定义分区程序,但是鉴于问题出在URL上,使用更常见的MaxDegreeOfParallelism选项可能更有意义。

分区程序具有一个很好的算法,可以根据内核数量创建批处理。

Parallel.ForEach(Partitioner.Create(from, to), range =>
{
    for (int i = range.Item1; i < range.Item2; i++)
    {
        // ... process i
    }
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM