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