Python進程池和線程池

來源:互聯網
上載者:User

標籤:img   adp   isp   .sh   線程池   url   done   ade   imp   

代碼

在編寫爬蟲時,效能的消耗主要在IO請求中,當單進程單線程模式下請求URL時必然會引起等待,從而使得請求整體變慢。

import requestsfrom concurrent.futures import ThreadPoolExecutor  #引入線程池模組def asyns_url(url):    try:        response = requests.get(url)    except Exception as e:        print(‘異常結果‘,response.url,response.content)    print(‘擷取結果‘, response.url, response.content)url_list ={    ‘http://www.baidu.com‘,    ‘http://www/google.com‘,    ‘http://dig.chouti.com‘,    ‘http://www.bing.com‘}pool =ThreadPoolExecutor(5)for url in  url_list:    print(‘開始請求‘,url)    pool.submit(asyns_url,url)pool.shutdown(wait=True)#終止線程

 

from concurrent.futures import ProcessPoolExecutorimport requestsdef fetch_async(url):    response = requests.get(url)    return responseurl_list = [‘http://www.github.com‘, ‘http://www.bing.com‘]pool = ProcessPoolExecutor(5)for url in url_list:    pool.submit(fetch_async, url)pool.shutdown(wait=True)3.多進程執行
多進程
from concurrent.futures import ProcessPoolExecutorimport requestsdef fetch_async(url):    response = requests.get(url)    return responsedef callback(future):    print(future.result())url_list = [‘http://www.github.com‘, ‘http://www.bing.com‘]pool = ProcessPoolExecutor(5)for url in url_list:    v = pool.submit(fetch_async, url)    v.add_done_callback(callback)pool.shutdown(wait=True)3.多進程+回呼函數執行
多進程+回呼函數

 

Python進程池和線程池

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.