Python爬虫教程(四)
?
?一、線程、進程、協程的概念
? ? ? ?線程:是進程的一個執行單元,是進程內可調度實體。比進程更小的獨立運行的基本單位。線程也被稱為輕量級進程。
? ? ? ?進程:是并發執行的程序在執行過程中分配和管理資源的基本單位,是一個動態概念,競爭計算機系統資源的基本單位。
? ? ? ?協程:是一種比線程更加輕量級的存在。一個線程也可以擁有多個協程。其執行過程更類似于子例程,或者說不帶返回值的函數調用。
二、多線程
? ? ? ?1.單線程:兩個部分的任務,執行完前面再執行后面任務。
? ? ? ?2.多線程
? ? ? ?通過輸出結果,可以看到兩個線程是同時進行任務的,但任務執行由CPU決定(可以創建多個線程)。
? ? ? ?3.第二種多線程方法
? ? ? ?其輸出結果與第一種方式類似,可通過結果看出兩個線程在同時工作。
? ? ? ?4.建立多個子線程。
三、多進程
? ? ? ?其邏輯與多線程邏輯基本相同。
四、線程池及進程池
? ? ? ? 我們可通過線程池和進程池進行多個線程或進程的并行運算。
? ? ? ?1.線程池
? ? ? ?2.進程池?
五、協程
? ? ? ?1.協程:協程是比線程更小的一種執行單元,你可以認為是輕量級的線程,當程序遇見IO操作時,可以選擇切換到其他任務上,更適合于用來實現彼此熟悉的程序組件,如合作式多任務,迭代器,無限列表和管道。
? ? ? ?微觀上是一個任務一個任務進行切換,切換條件是IO操作;宏觀上為多個任務一起執行(多任務異步操作)。
? ? ? ?2.異步協程及同步操作。?
? ? ? ?同步操作輸出結果:運行時間9秒,基本為等待時間。
? ? ? ?異步操作:
? ? ? ?異步操作輸出結果:4秒的時間基本為最長等待時間,兩個時間對比可看出異步操作為同時啟動多個任務。
? ? ? ?3.使用異步協程實戰下載優美圖庫圖片,選擇三張圖片下載地址進行簡單的下載,學習aiohttp模塊的應用,與requests模塊進行對比。
? ? ? ?輸出結果:?
? ? ? ?4.實戰爬取百度小說西游記全文。?
? ? ? ?其頁面源代碼中沒有小說內容,打開開發者工具,點擊查看全部章節。?
? ? ? ?找到標題內容及標題內容所在鏈接。下面尋找小說具體內容及內容所在鏈接,點擊任意一章進入。?
? ? ? ?下面進行小說內容爬取,小說內容較多,我們使用異步協程的方式進行爬取,通過book_id、c_id進行傳參,可通過修改book_id即可爬取百度小說中其他小說的內容。?
總結
以上是生活随笔為你收集整理的Python爬虫教程(四)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python爬虫教程(二)
- 下一篇: 两个简单的python入门小游戏