首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在使用MaxDegreeOfParallelism时确定Parallel.ForEachAsync的适当值

如何在使用MaxDegreeOfParallelism时确定Parallel.ForEachAsync的适当值
EN

Stack Overflow用户
提问于 2022-03-30 22:45:39
回答 1查看 66关注 0票数 0

Scott在他的博客上给出的在.NET 6中使用Parallel.ForEachAsync的示例将MaxDegreeOfParallelism的值指定为3。

但是,如果未指定,则默认MaxDegreeOfParallelismProcessorCount。这对于CPU绑定工作来说是有意义的,但是对于异步I/O绑定工作,对于默认值来说,这似乎是一个糟糕的选择。

如果我正在执行以下斯科特示例中的一些操作,但我希望尽可能快地这样做,我应该如何确定使用MaxDegreeOfParallelism的最佳值?将其指定为int.MaxValue并假设TaskScheduler在调度ThreadPool上的工作时会做最明智的事情,这是否合理?

代码语言:javascript
复制
ParallelOptions parallelOptions = new()
{
    MaxDegreeOfParallelism = 3
};
 
await Parallel.ForEachAsync(userHandlers, parallelOptions, async (uri, token) =>
{
    var user = await client.GetFromJsonAsync<GitHubUser>(uri, token);
 
    Console.WriteLine($"Name: {user.Name}\nBio: {user.Bio}\n");
});
EN

回答 1

Stack Overflow用户

发布于 2022-03-31 00:18:38

得到is...testing号码的唯一方法。

关于http工作,涉及两个方面:

  1. 你的代码
  2. 为你工作的遥控器。

对于遥控器来说,你的速度可能太快了。这可能是因为资源和/或节流。

注意:缺省值

缺省值--这将导致ProcessorCount --将取决于代码运行的机器,如果您在云中运行代码,则这个数字可能与您健壮的笔记本上的不同。

这可能导致非prod环境和prod环境之间的意外差异。

GitHub特异性

gitHub.com为非企业用户提供了每小时5,000个请求(来自这里),还有

为了在GitHub上提供高质量的服务,在使用该API时,可能会对某些操作适用附加的速率限制。例如,使用API快速创建内容、积极地轮询而不是使用web挂钩、发出多个并发请求或反复请求计算成本高的数据,可能会导致二级速率限制。

集成商的最佳做法中我们可以阅读

处理二级利率限制 二级利率限制是另一种方法,我们确保API的可用性。为了避免达到这个限制,您应该确保您的应用程序遵循下面的指导方针。

  • ..。
  • 依次对单个用户或客户端ID发出请求。不要同时请求单个用户或客户端ID。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71684948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档