【发布时间】:2013-02-21 12:30:07
【问题描述】:
我正在使用 C# Parallel.ForEach 处理一千多个数据子集。一组需要 5-30 分钟来处理,具体取决于组的大小。在我的电脑里有选项
ParallelOptions po = new ParallelOptions();
po.MaxDegreeOfParallelism = Environment.ProcessorCount
我将获得 8 个并行进程。据我了解,进程在并行任务之间平均分配(例如,第一个任务获得作业编号 1、9、17 等,第二个任务获得 2、10、18 等);因此,一项任务可以比其他任务更快地完成自己的工作。因为这些数据集比其他数据集花费的时间更少。
问题是四个并行任务在 24 小时内完成了它们的工作,但最后一个在 48 小时内完成。是否有机会组织并行性以使所有并行任务均等完成?这意味着所有并行任务继续工作,直到所有工作都完成?
【问题讨论】:
-
最长的任务需要多长时间?
-
最长单循环最长 30 分钟,最长并行任务的总处理时间约为 48 小时。