我在我的代码中使用并行 for 循环在大量实体(12,000)上运行长时间运行的进程。
该过程解析一个字符串,遍历许多输入文件(我已经读过,鉴于基于 IO 的事物的数量,线程的好处可能值得怀疑,但它似乎在其他地方加快了速度)并输出匹配的结果。
最初,该过程进行得非常快 - 但最终会慢到爬行。它可能只是遇到了一些特别棘手的输入数据,但这似乎不太可能仔细观察。
在循环中,我添加了一些调试代码,当它开始/结束迭代时打印“开始处理:”和“完成处理:”,然后编写了一个配对开始和结束的程序,最初是为了找到哪个 ID 是导致崩溃。
但是,从不匹配 ID 的数量来看,该程序似乎同时处理了超过 400 个不同的实体。这似乎是,对于大量的 IO,它可能是问题的根源。
所以我的问题是(是)这个(这些):
- 我是否正确地解释了不匹配的 ID,或者在幕后我错过了一些聪明的东西,或者甚至是一些明显的东西?
- 如果您同意我发现的内容是正确的,我该如何限制它分拆并立即执行的数量?
我意识到这可能是一个有点非正统的问题,并且由于没有代码,可能很难回答,但感谢您提供任何帮助,如果您想了解更多信息,请在评论中告诉我。