我有用 C# 编写的 Webcrawles,它使用多线程。现在它可以下载和解析大约 1000 个链接/分钟,但是当我运行 ex. 3个实例同时每个实例可以达到1000个链接/分钟,所以我有3000个链接/分钟。一个实例最多使用 2% 的 CPU、100MB RAM 和 1% 的网络速度。现在我想知道当我有可用资源(cpu、ram、network)时,一个实例可以达到 3000 个链接/分钟或更多吗?
我的代码结构:
ThreadSafeFileBuffer<string> successWriter = new ThreadSafeFileBuffer<string>("ok.txt");
IEnumerable<string> lines = File.ReadLines("urls.txt");
var options = new ParallelOptions
{
CancellationToken = _cts.Token,
MaxDegreeOfParallelism = 500
};
Parallel.ForEach(lines, options, (line, loopState, idx) =>
{
var crawler = new Crawler(line);
var result = crawler.Go(); //download,parse
successWriter.AddResult(result);
}
我有 Windows 7,CPU i7,16GB RAM,SSD 磁盘