我有一个包含大约 70GB 文件的数据库。我需要选择这些文件,处理它们的内容并将它们保存在其他地方。
这是简单的部分,但是这 70GB 分布在 300k 个文件中,这意味着如果我同步执行,我将不得不轻松等待几天。
我正在努力优化这段代码,所以我想我会利用一些并行执行,因为我可以同时处理多个文件。
但我担心,
Parallel.ForEach()
会很快耗尽我的内存,当我的列表有数十万个元素时它是如何工作的?它显然不能产生等于列表中元素数量的线程,否则它会堵塞我的 RAM。
如果
Parallel.ForEach()
不是我正在寻找的答案,那么我还需要哪些其他选项来同时为列表中的每个元素运行自定义代码?