问题标签 [parallel.for]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - Parallel For 在 2.3 分钟后导致大量延迟峰值
编辑:
我注意到这些滞后峰值仅在 Visual Studio 中调试时发生。如果我在 Visual Stduio 之外运行 .exe,该程序不会使用超过 3% 的 CPU。谁能告诉我为什么会这样?
我遇到了并行处理的问题。我正在使用 Parallel.For 检查大量代理(通过发出 webrequests)。这是我的功能:
我的问题如下:
该程序对于前 0-2000 个请求运行良好,其中 cpu 使用率约为 3-5%。然后,在 2-3 分钟后,我遇到了大量且频繁的延迟峰值,导致 CPU 使用率跳到 100%。我不知道为什么会发生这种情况,因为它直到现在都运行良好。我希望有人可以帮助我了解导致这种情况的原因。
在这里你可以看到我的问题:
c# - Parallel.For 中的内存屏障
Microsoft 的 Parallel.For 文档包含以下方法:
matA
在此方法中,可能有多个线程从和读取值matB
,这些值都是在调用线程上创建和初始化的,并且可能有多个线程将值写入result
,稍后由调用线程读取。在传递给 的 lambda 中Parallel.For
,数组读取和写入没有显式锁定。因为这个例子来自微软,所以我认为它是线程安全的,但我试图了解幕后发生的事情以使其成为线程安全的。
据我所读的内容和我在 SO 上提出的其他问题(例如这个),据我所知,需要几个内存屏障才能使这一切正常工作。那些是:
- 创建和初始化
matA
and后调用线程上的内存屏障matB
, matA
在从和读取值之前,每个非调用线程上的内存屏障matB
,- 在将值写入 后,每个非调用线程上的内存屏障
result
,以及 - 在从 读取值之前调用线程上的内存屏障
result
。
我是否正确理解了这一点?
如果是这样,是否Parallel.For
会以某种方式完成所有这些工作?我去挖掘参考源,但在遵循代码时遇到了麻烦。我没有看到任何lock
阻塞或MemoryBarrier
呼叫。
c# - 我可以将 Parallel.For 与 sql 命令一起使用吗?
我有一类范围
如果我使用正常的FOR
作品完美,但必须等待每个命令完成并且每个查询需要 8 秒,所以 10 个查询需要 80 秒。
在并行版本中,如果我只打印范围完美,但如果尝试执行命令说已经在进行中。
{“操作已在进行中。”}
我该如何解决这个问题?
仅供参考:我试图解决这个问题我之前发布过
c# - 如何做 parallel.for 异步方法
使用一些异步方法在 c# 中进行并行处理的最佳方法是什么。让我用一些简单的代码来解释
示例场景:我们有一个人和 1000 个来自他们的文本文件。我们要检查他的文本文件不包含敏感关键字,如果他的文本文件之一包含敏感关键字,我们将他标记为不可信。检查这一点的方法是异步方法,只要我们发现其中一个敏感关键字不需要进一步处理,就必须为那个人打破检查循环。
为了获得最佳性能并使其如此快速,我们必须使用并行处理简单的伪代码:
问题是Parallel.ForEach
不要等到异步任务完成,所以if (sensitivedetected)
在创建任务完成后立即运行语句。我阅读了其他问题,例如write parallel.for with async和async/await 和 Parallel.For以及许多其他页面。当您需要稍后收集和使用异步方法的结果时,此主题很有用,但在我的场景中,循环的执行应尽快结束。
更新:示例代码:
c# - 我必须使用 C# 并行调用多个不同的 Web 服务
我有一个要求,我需要向不同服务器上托管的不同 Web 服务发送多个并行调用。我必须阅读配置文件才能知道必须进行多少次调用。假设有 4 台服务器,并且在每台服务器上托管一个 Web 服务。配置的值为 4 然后我必须并行调用每个服务 4 次。总调用数为 16。这是我所做的代码:
我实际上打了 14 到 16 个电话,所以出了点问题。这是正确的方法吗?
vb.net - VB.NET - Parallel.For 比 Sequential For 慢
我正在尝试使用并行处理来根据其内容分离数据。
在下面的示例中,我生成随机数,如果满足 a 条件,我想将它们存储到数据表中。
令我失望的是,顺序 for 的工作速度比并行快。
使并行工作更快可行吗?
c# - C# parallel.For 循环减少执行时间
我找到了一个 osrm-machine,它在我请求时返回一个 json 字符串。json 有一些关于 2 个位置的特殊信息,我正在处理 json 并获取距离属性的值,以构建这些位置的距离矩阵。我有超过 2000 个位置,这个处理大约需要 4 个小时。我需要通过并行减少执行时间,但我对这个话题很陌生。这是我的工作,我应该如何优化并行循环?或者也许你可以让我采用新的方法。谢谢
c# - 在并行 For 循环期间更改停止条件
我想同时探索一些地点。在并行循环之前的主线程中,我探索了第一个位置并且我有新的位置要探索(例如 50 个新位置)。但是我想探索 100 个位置(如果有这么多新位置),所以我必须更改循环的停止条件。
我想探索 100 个位置并为每个探索的位置获取元素。
期间我该怎么做。有可能的?目前我正在按照上面的示例做一些事情,但是如果 Locations 在循环开始时有 50 个元素。循环将仅探索 50 个位置,即使我使用新元素增加 Locations 列表,停止条件也没有改变。
也许有人对此解决方案有更好的想法?
还有一些其他的问题。你知道 Parallel.For 是如何安排迭代的吗?主线程是否在开始时将问题分为 N 线程?或者更动态地做 - 当线程完成一些迭代时,它会从主线程获得一些新工作?
谢谢你们!
vb.net - 使用 Parallel.For 加速函数
我已经编写了这个函数,我正在尝试使用Parallel.For
或其他方式加速它。但是,当我用 a 替换其中一个循环时Parallel.For
,它会给出错误的结果。
编辑
这是我的功能Parallel.For
c# - C# Parallel.for 仍然没有使用 concurrentList 包装器正确索引
我有这个问题,我似乎无法让它工作......
我的列表周围有一个包装器,以使其线程安全。但是,索引在我的 parallel.for 循环中仍然不起作用。
我将返回的数据导出到 Excel 工作表。问题是返回的数据混淆了,所以迭代 0 不在 data[0] 中,而迭代 10 不在 data[10] 中。
我的并发列表包装器:
我怎样才能解决这个问题?我想使用这些数据并将其导出到excel,但现在所有数据都混在一起了。
谢谢你。