Linux企業級專案實踐之網路爬蟲(21)——擴充套件為多工爬蟲
高效的網路爬蟲是搜尋引擎的重要基礎。採用多工併發執行,實現類似於CPU的流水線(pipeline)執行方式,可極大地提高網路和計算資源的利用率等效能。
#include "threads.h"
#include "spider.h"
#include "confparser.h"
/* the number of current running thread */
int g_cur_thread_num = 0;
/* lock for changing g_cur_thread_num's value */
pthread_mutex_t gctn_lock = PTHREAD_MUTEX_INITIALIZER;
int create_thread(void *(*start_func)(void *), void * arg, pthread_t *pid, pthread_attr_t * pattr)
{
pthread_attr_t attr;
pthread_t pt;
if (pattr == NULL) {
pattr = &attr;
pthread_attr_init(pattr);
pthread_attr_setstacksize(pattr, 1024*1024);
pthread_attr_setdetachstate(pattr, PTHREAD_CREATE_DETACHED);
}
if (pid == NULL)
pid = &pt;
int rv = pthread_create(pid, pattr, start_func, arg);
pthread_attr_destroy(pattr);
return rv;
}
void begin_thread()
{
SPIDER_LOG(SPIDER_LEVEL_DEBUG, "Begin Thread %lu", pthread_self());
}
void end_thread()
{
pthread_mutex_lock(&gctn_lock);
int left = g_conf->max_job_num - (--g_cur_thread_num);
if (left == 1) {
/* can start one thread */
attach_epoll_task();
} else if (left > 1) {
/* can start two thread */
attach_epoll_task();
attach_epoll_task();
} else {
/* have reached g_conf->max_job_num , do nothing */
}
SPIDER_LOG(SPIDER_LEVEL_DEBUG, "End Thread %lu, cur_thread_num=%d", pthread_self(), g_cur_thread_num);
pthread_mutex_unlock(&gctn_lock);
}
相關文章
- 網路爬蟲專案爬蟲
- Java 爬蟲專案實戰之爬蟲簡介Java爬蟲
- Python網路爬蟲實戰專案大全 32個Python爬蟲專案demoPython爬蟲
- 網路爬蟲(python專案)爬蟲Python
- 專案--python網路爬蟲Python爬蟲
- 網路爬蟲——爬蟲實戰(一)爬蟲
- 精通Scrapy網路爬蟲【一】第一個爬蟲專案爬蟲
- 企業資料爬蟲專案爬蟲
- Python網路爬蟲實戰小專案Python爬蟲
- Python網路爬蟲實戰專案大全!Python爬蟲
- 企業資料爬蟲專案(二)爬蟲
- 2019最新《網路爬蟲JAVA專案實戰》爬蟲Java
- 【爬蟲】爬蟲專案推薦 / 思路爬蟲
- 爬蟲:多程式爬蟲爬蟲
- [網路爬蟲] 網路爬蟲實踐:大麥網演唱會預約搶票 【待續】爬蟲
- 爬蟲專案爬蟲
- 網路爬蟲專案開發日誌(三):爬蟲上線準備爬蟲
- 網路爬蟲爬蟲
- python網路爬蟲應用_python網路爬蟲應用實戰Python爬蟲
- 網路爬蟲——專案實戰(爬取糗事百科所有文章)爬蟲
- [Python] 網路爬蟲與資訊提取(1) 網路爬蟲之規則Python爬蟲
- 【PhpSelenium】3.定時爬蟲 + 多工爬蟲 + 代理池PHP爬蟲
- [PhpSelenium] 3.定時爬蟲 + 多工爬蟲 + 代理池PHP爬蟲
- python爬蟲-33個Python爬蟲專案實戰(推薦)Python爬蟲
- 爬蟲實戰專案集合爬蟲
- 爬蟲專案實戰(一)爬蟲
- 爬蟲實戰專案合集爬蟲
- Python爬蟲開發與專案實踐(3)Python爬蟲
- Python網路爬蟲實戰Python爬蟲
- 爬蟲小專案爬蟲
- 爬蟲專案部署爬蟲
- 什麼是網路爬蟲?為什麼用Python寫爬蟲?爬蟲Python
- python爬蟲---網頁爬蟲,圖片爬蟲,文章爬蟲,Python爬蟲爬取新聞網站新聞Python爬蟲網頁網站
- python網路爬蟲_Python爬蟲:30個小時搞定Python網路爬蟲視訊教程Python爬蟲
- python網路爬蟲--專案實戰--scrapy嵌入selenium,晶片廠級聯評論爬取(6)Python爬蟲晶片
- 網路爬蟲示例爬蟲
- 網路爬蟲精要爬蟲
- python爬蟲初探--第一個python爬蟲專案Python爬蟲
- 爬蟲專案:大麥網分析爬蟲