該節(jié)我們來講講爬蟲中的一個難點(diǎn),并發(fā).并發(fā)是什么,并發(fā)即同時啟動多個進(jìn)程/線程來運(yùn)行所給予的任務(wù).那進(jìn)程/線程又有都是什么呢?我們來簡單的介紹一下.
進(jìn)程(Process)是計(jì)算機(jī)中的程序關(guān)于某數(shù)據(jù)集合上的一次運(yùn)行活動,是系統(tǒng)進(jìn)行資源分配和調(diào)度的基本單位,是操作系統(tǒng)結(jié)構(gòu)的基礎(chǔ)。程序是指令、數(shù)據(jù)及其組織形式的描述,進(jìn)程是程序的實(shí)體。
而線程,有時被稱為輕量級進(jìn)程(Lightweight Process,LWP).線程是進(jìn)程中的一個實(shí)體,可與同屬一個進(jìn)程的其它線程共享進(jìn)程所擁有的全部資源。一個線程可以創(chuàng)建和撤消另一個線程,同一進(jìn)程中的多個線程之間可以并發(fā)執(zhí)行。
我們一般講的爬蟲并發(fā),是指在同一個時間內(nèi),有N個爬蟲同時執(zhí)行者不同的鏈接這種情況.那么現(xiàn)在來看看有些語言對于并發(fā)的支持性如何.在此我拿我寫過的幾種語言的爬蟲舉個例子.
很明顯,語言特性決定了該語言的并發(fā)性能.你現(xiàn)在去翻翻你語言的文檔,看看你語言對并發(fā)的支持力度有多少呢?