首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在多线程时分别抓取项目?

如何在多线程时分别抓取项目?
EN

Stack Overflow用户
提问于 2014-04-26 18:52:59
回答 2查看 58关注 0票数 0

我对多线程是个新手(就像我今天晚上开始学习的那样),而且我刚刚写了一个我自己制作的多线程的刮板。但它只在两个线程上抓取相同的数据两次,而不是单独抓取,这就是我将其设为多线程的原因(为了提高时间效率

例如,如果我正在抓取:

代码语言:javascript
复制
1  
2  
3  
4  
5  
6  
7  
8

我将程序设置为使用2个线程,输出类似于:

代码语言:javascript
复制
1  
2  
1  
2  
3  
3  
4  
5  
5  
4  
6  
7  
6  
8  
7  
8

基本上,与多线程抓取数字列表的速度不同,它为每个线程抓取整个列表一次,这会导致输出中的重复(我非常确定抓取速度是相同的)

抱歉,如果这一切不清楚或者听起来很愚蠢,我真的是多线程的新手,就像我说的。如果我在帖子中说得不清楚,我会把一切都说清楚。

EN

回答 2

Stack Overflow用户

发布于 2014-04-26 19:00:27

您可以使用Parallel-class。看看这个:http://msdn.microsoft.com/en-us/library/dd537608(v=vs.110).aspx

代码语言:javascript
复制
Parallel.ForEach(yourList, (listItem) =>
{
    Debug.WriteLine(listItem);
});

有关更多详细信息,请查看我在上面发布的网站。

票数 1
EN

Stack Overflow用户

发布于 2014-04-26 18:59:46

一种常见的方法是使用job pool,让您的主线程将数据提供给工作线程,然后工作线程只处理它获得的数据。因此,您没有任何重复项。你并不是真的使用多线程,你只需要做两次。

根据你的具体问题,可能会有其他方式,比如两个线程只做第二个项目,或者类似的事情。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23309838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档