我有一个项目列表,我通过这些项目循环使用PLINQ语句来增加特定用户的总收入,如下所示:
data.groupby("salary_percentile").early_quitter.value_counts(normalize = True)
Out:
salary_percentile early_quitter
[17000, 25000] 0 0.744526
1 0.255474
(25000, 30000] 0 0.751880
1 0.248120
(30000, 38000] 0 0.701799
1 0.298201
(38000, 46000] 0 0.772118
1 0.227882
(46000, 53000] 0 0.742015
1 0.257985
(53000, 57000] 0 0.720339
1 0.279661
(57000, 61000] 0 0.745763
1 0.254237
(61000, 64000] 0 0.688144
1 0.311856
通过这样使用它,我总是得到一个不同的价值。我相信这是因为声明的变量不是线程安全的。我该如何解决这个问题?
P.S。 _SortedList是一个通用集合(List<>)...
答案 0 :(得分:6)
使用Sum
获取使用PLINQ的总数。它将有效且安全地汇总总和。
double TotalEarnings = _SortedList.AsParallel()
.WithDegreeOfParallelism(5)
.Sum(item => item.SaleEarning);