Python Tip Day15:利用線程實現異步消息

最近寫了個代理池的小程序,其中有一項是需要檢測

proxy_adress的可用性。首先建立了一個測試小程序,用某之家提供的測試源碼做ip校驗。

Python Tip Day15:利用線程實現異步消息

每次驗證需要等待網頁的響應才能繼續往下執行,面對剛剛爬取的幾萬個代理IP,想從中間挑選出幾個能用的實在不容易,僅僅在request.get()等待時間就難以估計。作為小白,第一次真的等了一個晚上。

Python Tip Day15:利用線程實現異步消息

Python Tip Day15:利用線程實現異步消息

無奈想到了的有個I/O密集型和計算密集型的說法,儘管很多人評價Python的多線程很雞肋,但不得不說,對於I/O密集型的程序來說,這個辦法還是很不錯的。

Python Tip Day15:利用線程實現異步消息

最開始寫了這個辦法,直接把原來的check_proxy_is_ava的方法傳入到這裡面,這樣以來,在使用check_proxy_is_ava的時候,就是一直在調用check_async的方法。這樣雖然實現了,但最後,還是改變了業務原來的想法,調用方法的時候並不是想調用check_async,而是為了使用check_proxy_is_ava,這樣一來,未免覺得彆扭。

於是,改成裝飾器的寫法,當用到的時候,直接裝飾上去。這樣看起來是一次舒服的使用,既用上可裝飾器,也利用線程實現異步消息

Python Tip Day15:利用線程實現異步消息

【文】白水鄉巴佬


分享到:


相關文章: