欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

python爬蟲(chóng)能夠開(kāi)多少線(xiàn)程

小編給大家分享一下python爬蟲(chóng)能夠開(kāi)多少線(xiàn)程,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!

十余年的三山網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開(kāi)發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。營(yíng)銷(xiāo)型網(wǎng)站的優(yōu)勢(shì)是能夠根據(jù)用戶(hù)設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整三山建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。成都創(chuàng)新互聯(lián)公司從事“三山網(wǎng)站設(shè)計(jì)”,“三山網(wǎng)站推廣”以來(lái),每個(gè)客戶(hù)項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

1、爬蟲(chóng)環(huán)境

Pycharm+python3.7.0

2、進(jìn)程和線(xiàn)程的關(guān)系:

一個(gè)線(xiàn)程只能屬于一個(gè)進(jìn)程,而一個(gè)進(jìn)程可以有多個(gè)線(xiàn)程,但至少有一個(gè)線(xiàn)程。

資源分配給進(jìn)程,同一進(jìn)程的所有線(xiàn)程共享該進(jìn)程的所有資源。

CPU 分給線(xiàn)程,即真正在 CPU 上運(yùn)行的是線(xiàn)程。

3、多線(xiàn)程通信實(shí)例

因?yàn)槿肿兞坎⒉皇蔷€(xiàn)程安全的,比如說(shuō)全局變量里(列表類(lèi)型)只有一個(gè) url 了,線(xiàn)程 B 判斷了一下全局變量非空,在還沒(méi)有取出該 url 之前,cpu 把時(shí)間片給了線(xiàn)程 C,線(xiàn)程 C 將最后一個(gè)url 取走了,這時(shí) cpu 時(shí)間片又輪到了 B,B 就會(huì)因?yàn)樵谝粋€(gè)空的列表里取數(shù)據(jù)而報(bào)錯(cuò),而 queue 模塊實(shí)現(xiàn)了多生產(chǎn)者、多消費(fèi)者隊(duì)列,在放值取值時(shí)是線(xiàn)程安全的。

4、實(shí)例代碼

import threading # 導(dǎo)入 threading 模塊
 
from queue import Queue #導(dǎo)入 queue 模塊
 
import time #導(dǎo)入 time 模塊
 
# 爬取文章詳情頁(yè)
 
def get_detail_html(detail_url_list, id):
 
while True:
 
url = detail_url_list.get() #Queue 隊(duì)列的 get 方法用于從隊(duì)列中提取元素
 
time.sleep(2) # 延時(shí) 2s,模擬網(wǎng)絡(luò)請(qǐng)求和爬取文章詳情的過(guò)程
 
print("thread {id}: get {url} detail finished".format(id=id,url=url)) #打印線(xiàn)程 id 和被爬取了文章內(nèi)容的 url
 
# 爬取文章列表頁(yè)
 
def get_detail_url(queue):
 
for i in range(10000):
 
time.sleep(1) # 延時(shí) 1s,模擬比爬取文章詳情要快
 
queue.put("http://testedu.com/{id}".format(id=i))#Queue 隊(duì)列的 put 方法用于向 Queue 隊(duì)列中放置元素,由于 Queue 是先進(jìn)先出隊(duì)列,所以先被 Put 的 URL 也就會(huì)被先 get 出來(lái)。
 
print("get detail url {id} end".format(id=i))#打印出得到了哪些文章的 url
 
#主函數(shù)
 
if __name__ == "__main__":
 
detail_url_queue = Queue(maxsize=1000) #用 Queue 構(gòu)造一個(gè)大小為 1000 的線(xiàn)程安全的先進(jìn)先出隊(duì)列
 
# 先創(chuàng)造四個(gè)線(xiàn)程
 
thread = threading.Thread(target=get_detail_url, args=(detail_url_queue,)) #A 線(xiàn)程負(fù)責(zé)抓取列表
 
url
 
html_thread= []
 
for i in range(3):
 
thread2 = threading.Thread(target=get_detail_html, args=(detail_url_queue,i))
 
html_thread.append(thread2)#B C D 線(xiàn)程抓取文章詳情
 
start_time = time.time()
 
# 啟動(dòng)四個(gè)線(xiàn)程
 
thread.start()
 
for i in range(3):
 
html_thread[i].start()
 
# 等待所有線(xiàn)程結(jié)束,thread.join()函數(shù)代表子線(xiàn)程完成之前,其父進(jìn)程一直處于阻塞狀態(tài)。
 
thread.join()
 
for i in range(3):
 
html_thread[i].join()
 
print("last time: {} s".format(time.time()-start_time))
 
#等 ABCD 四個(gè)線(xiàn)程都結(jié)束后,在主進(jìn)程中計(jì)算總爬取時(shí)間。

看完了這篇文章,相信你對(duì)python爬蟲(chóng)能夠開(kāi)多少線(xiàn)程有了一定的了解,想了解更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!

文章名稱(chēng):python爬蟲(chóng)能夠開(kāi)多少線(xiàn)程
文章轉(zhuǎn)載:http://www.chinadenli.net/article26/iiejcg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開(kāi)發(fā)Google品牌網(wǎng)站制作網(wǎng)站設(shè)計(jì)公司網(wǎng)站改版服務(wù)器托管

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化