<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          用最簡單的辦法寫多線程的程序

          共 935字,需瀏覽 2分鐘

           ·

          2021-01-28 20:49

          python的多線程由于GIL鎖的緣故,不能有效利用CPU多核,但是在I/O密集型的任務中,多線程仍然可以有效的提高程序的性能。你可以自己從頭編寫多線程的程序,也可以使用已經(jīng)封裝好的庫,前者可以讓你更加熟悉理解如何編寫多線程程序,后者可以讓你快速完成任務,達到自己的目標。


          今天給大家推薦一個非常好用的庫,concurrent在2.7的版本中,它還是第三方庫,但3.x之后,已經(jīng)被官方納入正式版本,可見這個庫是多么優(yōu)秀。使用concurrent編寫多線程代碼,可以節(jié)省大量時間,尤其是對于結果的收集,簡直太便利了。下面的代碼,演示如何用concurrent 來實現(xiàn)一個多線程的爬蟲程序。


          import requestsfrom concurrent.futures import ThreadPoolExecutor
          urls = ['http://www.baidu.com', 'http://www.zhihu.com', 'http://www.csdn.net']

          def web(url): res = requests.get(url) return url, res.status_code

          executor = ThreadPoolExecutor(max_workers=3)
          for url, status_code in executor.map(web, urls): print(url, status_code)

          我們只需要關注在單個線程里需要做什么事情就可以了,就比如我寫的web函數(shù),只關心如何爬取一個url,其他的事情,諸如線程池如何創(chuàng)建,爬取的結果如何從子線程返回至主線程,統(tǒng)統(tǒng)不用考慮。


          max_workers 指定了線程池的大小,executor.map 需要傳入兩個參數(shù),第一個參數(shù)是子線程里需要執(zhí)行的函數(shù),第二個參數(shù)是一個列表,列表里是需要傳入函數(shù)的參數(shù),看起來很簡單吧!

          瀏覽 46
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  91在线无码精品秘 蜜桃入口 | 日韩高清AV | 亚洲精品电影 | 91精品久久久久久久久久入口 | 欧美人妻精品 |