Python 使用期物處理並發,python處理並發

來源:互聯網
上載者:User

Python 使用期物處理並發,python處理並發

  抨擊線程的往往是系統程式員,他們考慮的使用情境對一般的應用程式員來說,也許一生都不會遇到……應用程式員遇到的使用情境,99% 的情況下只需知道如何派生一堆獨立的線程,然後用隊列收集結果。

 

樣本:網路下載的三種風格 

  為了高效處理網路 I/O,需要使用並發,因為網路有很高的延遲,所以為了不浪費 CPU 週期去等待,最好在收到網路響應之前做些其他的事。

  為了通過代碼說明這一點,我寫了三個樣本程式,從網上下載 20 個國家的國旗映像。第一個樣本程式 flags.py 是依序下載的:下載完一個映像,並將其儲存在硬碟中之後,才請求下一個映像。另外兩個指令碼是並發下載的:幾乎同時請求所有映像,每下載完一個檔案就儲存一個檔案。flags_threadpool.py 指令碼使用 concurrent.futures 模組,而flags_asyncio.py 指令碼使用 asyncio 包。

運行 flags.py、flags_threadpool.py 和 flags_asyncio.py 指令碼得到的結果

$ python3 flags.pyBD BR CD CN DE EG ET FR ID IN IR JP MX NG PH PK RU TR US VN ➊ 每次運行指令碼後,首先顯示下載過程中下載完畢的國家代碼,最後顯示一個訊息,說明耗時20 flags downloaded in 7.26s                    ➋ flags.py 指令碼下載 20 個映像平均用時 7.18 秒$ python3 flags.pyBD BR CD CN DE EG ET FR ID IN IR JP MX NG PH PK RU TR US VN20 flags downloaded in 7.20s$ python3 flags.pyBD BR CD CN DE EG ET FR ID IN IR JP MX NG PH PK RU TR US VN20 flags downloaded in 7.09s$ python3 flags_threadpool.pyDE BD CN JP ID EG NG BR RU CD IR MX US PH FR PK VN IN ET TR20 flags downloaded in 1.37s                    ➌ flags_threadpool.py 指令碼平均用時 1.40 秒$ python3 flags_threadpool.pyEG BR FR IN BD JP DE RU PK PH CD MX ID US NG TR CN VN ET IR20 flags downloaded in 1.60s$ python3 flags_threadpool.pyBD DE EG CN ID RU IN VN ET MX FR CD NG US JP TR PK BR IR PH20 flags downloaded in 1.22s$ python3 flags_asyncio.py                     ➍ flags_asyncio.py 指令碼平均用時 1.35 秒BD BR IN ID TR DE CN US IR PK PH FR RU NG VN ET MX EG JP CD20 flags downloaded in 1.36s$ python3 flags_asyncio.pyRU CN BR IN FR BD TR EG VN IR PH CD ET ID NG DE JP PK MX US20 flags downloaded in 1.27s$ python3 flags_asyncio.pyRU IN ID DE BR VN PK MX US IR ET EG NG BD FR CN JP PH CD TR ➎ 注意國家代碼的順序:對並發下載的指令碼來說,每次下載的順序都不同20 flags downloaded in 1.42s

   兩個並發下載的指令碼之間效能差異不大,不過都比依序下載的指令碼快 5倍多。這隻是一個特別小的任務,如果把下載的檔案數量增加到幾百個,並發下載的指令碼能比依序下載的指令碼快 20 倍或更多。

依序下載的指令碼

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.