0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

使用Python多進程的理由

汽車玩家 ? 來源:編程派 ? 作者:饒木陽 ? 2020-04-04 16:50 ? 次閱讀

Python 是運行在解釋器中的語言,查找資料知道, python 中有一個全局鎖( GI),在使用多進程( Threa)的情況下,不能發(fā)揮多核的優(yōu)勢。而使用多進程( Multiprocess),則可以發(fā)揮多核的優(yōu)勢真正地提高效率。

對比實驗

資料顯示,如果多線程的進程是 CPU 密集型的,那多線程并不能有多少效率上的提升,相反還可能會因為線程的頻繁切換,導致效率下降,推薦使用多進程;如果是 IO 密集型,多線程進程可以利用 IO 阻塞等待時的空閑時間執(zhí)行其他線程,提升效率。所以我們根據實驗對比不同場景的效率

使用Python多進程的理由

(1)引入所需要的模塊

使用Python多進程的理由

(2)定義 CPU 密集的計算函數

使用Python多進程的理由

(3)定義 IO 密集的文件讀寫函數

使用Python多進程的理由

(4) 定義網絡請求函數

使用Python多進程的理由

(5)測試線性執(zhí)行 IO 密集操作、 CPU 密集操作所需時間、網絡請求密集型操作所需時間

使用Python多進程的理由

輸出

CPU 密集:95.6059999466、91.57099986076355 92.52800011634827、 99.96799993515015

IO 密集:24.25、21.76699995994568、21.769999980926514、22.060999870300293

網絡請求密集型:4.519999980926514、8.563999891281128、4.371000051498413、4.522000074386597、14.671000003814697

(6)測試多線程并發(fā)執(zhí)行 CPU 密集操作所需時間

使用Python多進程的理由

(7)測試多線程并發(fā)執(zhí)行 IO 密集操作所需時間

使用Python多進程的理由

(8)測試多線程并發(fā)執(zhí)行網絡密集操作所需時間

使用Python多進程的理由

Output : 0.7419998645782471、0.3839998245239258、0.3900001049041748

(9)測試多進程并發(fā)執(zhí)行 CPU 密集操作所需時間

使用Python多進程的理由

Output : 54.342000007629395、53.437999963760376

(10)測試多進程并發(fā)執(zhí)行 IO 密集型操作

使用Python多進程的理由

Output : 12.509000062942505、13.059000015258789

(11)測試多進程并發(fā)執(zhí)行 Http 請求密集型操作

使用Python多進程的理由

Output : 0.5329999923706055、0.4760000705718994

實驗結果

CPU 密集型操作 IO 密集型操作網絡請求密集型操作

使用Python多進程的理由

通過上面的結果,我們可以看到:

多線程在 IO 密集型的操作下似乎也沒有很大的優(yōu)勢(也許 IO 操作的任務再繁重一些就能體現出優(yōu)勢),在 CPU 密集型的操作下明顯地比單線程線性執(zhí)行性能更差,但是對于網絡請求這種忙等阻塞線程的操作,多線程的優(yōu)勢便非常顯著了

多進程無論是在 CPU 密集型還是 IO 密集型以及網絡請求密集型(經常發(fā)生線程阻塞的操作)中,都能體現出性能的優(yōu)勢。不過在類似網絡請求密集型的操作上,與多線程相差無幾,但卻更占用 CPU 等資源,所以對于這種情況下,我們可以選擇多線程來執(zhí)行。

使用Python多進程的理由

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯系本站處理。 舉報投訴
  • cpu
    cpu
    +關注

    關注

    68

    文章

    10804

    瀏覽量

    210829
  • python
    +關注

    關注

    55

    文章

    4767

    瀏覽量

    84375
收藏 人收藏

    評論

    相關推薦

    Python中多線程和多進程的區(qū)別

    Python作為一種高級編程語言,提供了多種并發(fā)編程的方式,其中多線程與多進程是最常見的兩種方式之一。在本文中,我們將探討Python中多線程與多進程的概念、區(qū)別以及如何使用線程池與
    的頭像 發(fā)表于 10-23 11:48 ?231次閱讀
    <b class='flag-5'>Python</b>中多線程和<b class='flag-5'>多進程</b>的區(qū)別

    python中5種線程鎖盤點

    線程安全是多線程或多進程編程中的一個概念,在擁有共享數據的多條線程并行執(zhí)行的程序中,線程安全的代碼會通過同步機制保證各個線程都可以正常且正確的執(zhí)行,不會出現數據污染等意外情況。
    發(fā)表于 03-07 11:08 ?1443次閱讀
    <b class='flag-5'>python</b>中5種線程鎖盤點

    分別使用多線程多進程協程+paramiko在華為交換機批量快速進行配置

    python對于網絡設備的操作屬于I/O密集型,在腳本運行時,存在大量的等待時間。我們便可以利用這些空閑的時間,進行其他的操作。
    的頭像 發(fā)表于 01-16 09:13 ?773次閱讀
    分別使用多線程<b class='flag-5'>多進程</b>協程+paramiko在華為交換機批量快速進行配置

    線程、進程、多線程、多進程和多任務之間有何關系?

    進程是程序執(zhí)行時的一個實例,即它是程序已經執(zhí)行到課中程度的數據結構的匯集。從內核的觀點看,進程的目的就是擔當分配系統資源(CPU時間、內存等)的基本單位。
    的頭像 發(fā)表于 01-11 13:39 ?333次閱讀
    線程、<b class='flag-5'>進程</b>、多線程、<b class='flag-5'>多進程</b>和多任務之間有何關系?

    你還是分不清多進程和多線程嗎?一文搞懂!

    你還是分不清多進程和多線程嗎?一文搞懂! 多進程和多線程是并發(fā)編程中常見的兩個概念,它們都可以用于提高程序的性能和效率。但是它們的實現方式和使用場景略有不同。 1. 多進程多進程
    的頭像 發(fā)表于 12-19 16:07 ?525次閱讀

    python環(huán)境變量的配置pip

    開始,然后討論如何找到Python的安裝路徑以及如何配置環(huán)境變量。接下來,我們將詳細講解pip的用途和安裝方法,并解決一些與pip相關的常見問題。 一、環(huán)境變量的概念 環(huán)境變量是操作系統提供的一種機制,用于存儲和傳遞一些全局的配置信息。每個進程
    的頭像 發(fā)表于 12-15 15:41 ?2328次閱讀

    python縮進錯誤怎么辦

    縮進錯誤是Python編程中常見的錯誤之一,通常是由于代碼塊的縮進不正確導致的。Python是一種強制縮進的語言,代碼塊之間需要保持一致的縮進程度。 縮進錯誤主要有兩種情況:縮進過多和縮進不足。下面
    的頭像 發(fā)表于 11-29 16:43 ?2135次閱讀

    python運行環(huán)境的安裝和配置

    Python是一種非常流行的編程語言,廣泛應用于科學計算、Web開發(fā)、人工智能等領域。為了能夠正常運行Python程序,我們需要先安裝和配置Python運行環(huán)境。本文將為您詳盡介紹Python
    的頭像 發(fā)表于 11-29 16:17 ?1082次閱讀

    python軟件對電腦配置要求

    Python是一種流行的編程語言,它在許多不同的領域中被廣泛使用,例如網站開發(fā)、數據科學和機器學習等。對于使用Python的開發(fā)者來說,了解Python軟件的電腦配置要求是非常重要的。本文將詳細介紹
    的頭像 發(fā)表于 11-29 14:58 ?9638次閱讀

    python軟件怎么運行代碼

    Python是一種高級編程語言,它被廣泛用于開發(fā)各種類型的應用程序,從簡單的腳本到復雜的網絡應用和機器學習模型。要運行Python代碼,您需要一個Python解釋器,它可以將您的代碼翻譯成計算機可以
    的頭像 發(fā)表于 11-28 16:02 ?842次閱讀

    如何運行Python程序

    運行Python程序非常簡單。Python是一種解釋型語言,這意味著可以直接通過解釋器來執(zhí)行代碼。下面我將詳細介紹如何運行Python程序。 一、安裝Python 在運行
    的頭像 發(fā)表于 11-24 09:31 ?1121次閱讀

    python怎么運行程序

    Python是一種廣泛使用的編程語言,它的簡易和可讀性使得它成為初學者和專業(yè)開發(fā)人員的首選。在運行Python程序之前,您需要安裝Python解釋器,然后按照以下步驟進行操作。 步驟1:安裝
    的頭像 發(fā)表于 11-24 09:25 ?2464次閱讀

    Python2與Python3的差異

    Python2與Python3是兩個不同的版本,它們在語法、功能和性能等方面存在一些差異。下面是對Python2和Python3的詳盡、詳實、細致的比較,分為以下幾個方面: 語法差異:
    的頭像 發(fā)表于 11-23 16:48 ?869次閱讀

    python32位與62位區(qū)別

    Python 是一種廣泛使用的高級編程語言,提供了豐富的庫和功能,可以用于開發(fā)各種應用程序。Python 可以在不同的操作系統上運行,包括 32 位和 64 位的系統。本文將詳細介紹 Python
    的頭像 發(fā)表于 11-23 16:44 ?1667次閱讀

    Python自帶的命令窗口

    Python自帶的命令窗口,也稱為Python交互式解釋器,是Python編程語言的一個重要工具,它允許用戶在命令行界面中輸入和執(zhí)行Python代碼。不同于編寫腳本并保存為文件后再執(zhí)行
    的頭像 發(fā)表于 11-22 14:02 ?859次閱讀