gpt4 book ai didi

c# - 我要对其进行字符串搜索的 4000 个文件

转载 作者:太空宇宙 更新时间:2023-11-03 18:34:35 26 4
gpt4 key购买 nike

在多个文件中搜索字符串的最佳方法是什么?

目前我正在对每个文件进行 foreach 循环,但我注意到它需要 4-5 分钟才能遍历所有 4000 多个文件

是否有某种并行的方式来做到这一点?

最佳答案

执行此操作的最佳方法是 Producer Consumer model .你要做的是让一个线程从硬盘驱动器读取并将数据加载到队列中,然后你有不确定数量的其他线程处理数据。

假设你的旧代码是这样的

foreach(var file in Directory.GetFiles(someSearch)
{
string textToRead = File.ReadAllText(file);
ProcessText(textToRead)
}

新的代码是

var collection = new BlockingCollection<string>(); //You may want to set a max size so you don't use up all your memory

Task producer = Task.Run(() =>
{
foreach(var file in Directory.GetFiles(someSearch)
{
collection.Add(File.ReadAllText(file))
}
collection.CompleteAdding();
});
Parallel.ForEach(collection.GetConsumingEnumerable(), ProcessText); //Make sure any actions ProcessText does (like incrementing any variables in the class) is done in a thread safe manner.

它的作用是让一个线程从硬盘驱动器读取数据,而不是与任何其他线程争夺 I/O,但它让多个线程同时处理所有读取的数据。

关于c# - 我要对其进行字符串搜索的 4000 个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17242907/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com