Centos 7 升級核心
阿新 • • 發佈:2021-11-06
目的:在爬蟲中使用非同步實現高效能的資料爬取操作。
非同步爬蟲的方式:
- 多執行緒: 多程序(不建議):
好處:可以為相關阻塞的操作單獨開啟執行緒或者程序,阻塞操作就可以非同步執行;
弊端:無法無限制的開啟多執行緒或者多程序;
- 執行緒池、程序池(適當的使用):
好處:可以降低系統對程序或者執行緒建立和銷燬的一個頻率,從而很好的降低系統的開銷;
弊端:池中執行緒或程序的數量是有上限;
- 單執行緒 + 非同步協程(推薦):
from multiprocessing.dummy import Pool
#例項化一個執行緒池物件 pool = Pool(4) #將列表中每一個列表元素傳遞給get_page進行處理。 pool.map(要執行非同步操作的函式,函式的引數) pool.close()
event_loop:事件迴圈,相當於一個無限迴圈,我們可以把一些函式註冊到這個事件迴圈上,當滿足某些條件的時候,函式就會被迴圈執行。
coroutine:協程物件,我們可以將協程物件註冊到事件迴圈中,他會被事件迴圈呼叫,我們可以使用,async關鍵字來定義一個方法,這個方法在呼叫時不會立即被執行,而是返回一個協程物件。
task:任務,他是對協程物件的進一步封裝,包含了任務的各個狀態;
future:代表將來執行或還沒執行的任務,實際上和task沒有本質區別;
async:定義一個協程;
await:用來掛起阻塞方法的執行;