c# - 每个并行运行复杂吗?
问题描述
我有一些复杂的 foreach 循环。由于 Web 服务器抛出 529,我必须对每 100 个连接进行限制,而且我知道同时我的限制会搞砸。
有没有办法让它并行运行,并且仍然可以正常工作?我才刚刚开始涉足并行编程,但我认为我不知道解决这个问题的方法。
foreach (var userId in IdCollection)
{
i++;
if (i % 100 == 0 && i != 0)
{
Thread.Sleep(15 * 1000);
}
ProcessId(userId, file);
}
进程号:
static async void ProcessId(long userId, string file)
{
var username = await Utilities.GetUsernameFromId(userId);
FileUtilities.WriteUsernameToFile(username, file);
IdItemsProcessed++;
}
方法 GetUsernameFromId 是实际挂起的方法,我并行运行的理由是希望加快这一速度,我有超过 100 万个 ID 需要处理,以这种速度,我会永远花时间。
它在服务器上运行一个 Web 客户端,获取响应并将其解析为用户名。非常简单的东西,但是当你大量使用它时可能会成为一个问题。
解决方案
推荐阅读
- python - tf.group 和 tensorflow 集合有什么不同?
- c# - 临时更改一个值(文本颜色)并在一些操作后恢复它(打印文本)
- string - 在字符串上使用范围时发生类型不一致
- javascript - 如何从猫鼬的另一个集合中计算文档?
- javascript - 模态窗口应该每天只为每位访客打开一次
- python - 高学习率使模型训练失败
- javascript - 以“安全”的方式嵌入其他网站
- kubernetes - 将 cni 插件从 flannel 切换到 calico 然后 flannel 后 Pod 无法启动
- python - Python - UnicodeEncodeError:'ascii'编解码器无法编码位置 42-43 中的字符:序数不在范围内(128)
- javascript - react-native run-ios 需要很长时间才能构建,有时永远不会