gpt4 book ai didi

vb.net - 实现多线程爬虫

转载 作者:行者123 更新时间:2023-12-03 13:15:47 28 4
gpt4 key购买 nike

我想使用我现在拥有的单线程搜寻器代码来实现一个多面读取的搜寻器。基本上,我从一个文本文件中读取URL,将每个URL都进行抓取并解析。我知道创建线程并为其分配进程的线程基础知识,但是我不太确定如何以以下方式实现:

我至少需要3个线程,并且需要从url列表中为每个线程分配一个url,然后每个线程都需要去获取它并解析它,然后再将内容添加到数据库中。

Dim gthread, tthread, ithread As Thread

gthread = New Thread(AddressOf processUrl)
gthread.Start(url)

tthread = New Thread(AddressOf processUrl))
tthread.Start(url)


ithread = New Thread(AddressOf processUrl))
ithread.Start(url)

WaitUntilAllAreOver:
        If gthread.ThreadState = ThreadState.Running Then
Thread.Sleep(5)
GoTo WaitUntilAllAreOver
End If

'等等..

现在的代码可能没有意义,但是我需要做的是向每个要执行的线程添加一个唯一的URL。

任何想法表示赞赏

最佳答案

等待Thread实例完成的最佳方法是调用.Join方法。请看下面的例子

Public Sub ParseAll(ByVal ParamArray urls As Uri()) 
Dim list as New List(Of Thread)
For Each url in urls
Dim thread = New Thread(AddressOf ProcessUrl)
thread.Start(url)
list.Add(thread)
Next
For Each thread in list
thread.Join
Next
End Sub

虽然您可能要考虑在此处使用 ThreadPoolThreadPool设计用于非常有效地产生许多小任务。

关于vb.net - 实现多线程爬虫,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2178658/

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