Python多线程之构建线程池
生活随笔
收集整理的這篇文章主要介紹了
Python多线程之构建线程池
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在做爬蟲項目時,假設獲取一個頁面的時間為3秒,一共需要獲取10個頁面,總時間也就是30秒,但是如果采用線程池,可以把總時間壓縮到3秒!因為這10個頁面是并行下載的(宏觀是并行,微觀仍然串行,只是CPU切換各任務的速度非常快而已)?
Python沒有內置的很好的線程池,推薦一個第三方庫threadpool
# pip install threadpool import time import threadpooli=1 # 執行比較耗時的函數,需要開啟多線程 def get_html(url):global itime.sleep(3) # 假設獲取一個頁面需要3sprint("第%d個頁面返回成功..."%i)i+=1if __name__ == '__main__':urls=[i for i in range(10)] # 假設十個urls=time.time()pool=threadpool.ThreadPool(10) # 建立線程池,可并行執行10個線程(宏觀)# 提交任務給線程池requests=threadpool.makeRequests(get_html,urls) # 函數,參數# 開始執行for req in requests:pool.putRequest(req)pool.wait() # 等待所有線程任務都完成e=time.time()print("共耗時{}".format(e-s))?
?
總結
以上是生活随笔為你收集整理的Python多线程之构建线程池的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python多线程——递归锁RLOCK
- 下一篇: Python之多进程