亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

python多線程和多進程關(guān)系詳解

 更新時間:2020年12月14日 08:35:23   作者:PY  
在本篇文章里小編給大家整理的是一篇關(guān)于python多線程和多進程之間的聯(lián)系的基礎內(nèi)容,有興趣的朋友們可以學習下。

關(guān)于多線程的大概講解:

在Python的標準庫中給出了2個模塊:_thread和threading,_thread是低級模塊不支持守護線程,當主線程退出了時,全部子線程都會被強制退出了。而threading是高級模塊,用作對_thread進行了封裝支持守護線程。在大部分狀況下人們只需要采用threading這個高級模塊即可。

關(guān)于多進程的大概講解:

多進程是multiprocessing模塊給出遠程與本地的并發(fā),在一個multiprocessing庫的采用場景下,全部的子進程全是由一個父進程運行來的,這個父進程變成madter進程,它會管理一系列的對象狀態(tài)下,如果一旦這個進程退出了,子進程很可能處在一個不穩(wěn)定的狀態(tài)下,那么這個父進程盡量要少做事來維持其穩(wěn)定性

所以python多線程和多進程的區(qū)別如下:

多線程中,全部子線程的進程號一樣;多進程中,不一樣的子進程進程號不一樣

線程共享內(nèi)存空間;進程的內(nèi)存是獨立的

多線程可以共享全局變量,多進程做不到

同一個進程的線程之間可以直接交流;2個進程想通信,必須通過一個中間代理來實現(xiàn)

一個線程可以控制和操作同一進程里的其他線程;但是進程只能操作子進程

創(chuàng)建新線程很簡單;創(chuàng)建新進程需要對其父進程進行一次克隆

內(nèi)容擴展:

python多進程、多線程之聯(lián)系與區(qū)別

進程

概念:進程是操作系統(tǒng)分配資源的最小單元  

理解:一個應用程序至少包括1個進程,每個進程在執(zhí)行過程中擁有獨立的內(nèi)存單元,python的多進程編程主要依靠multiprocess模塊。

進程間通信:首先,進程間是可以相互通信的,比較常見的有七種通信方式,如管道pipe、命名管道FIFO、消息隊列MessageQueue、共享內(nèi)存SharedMemory、信號量Semaphore、套接字Socket、信號 signal(由于實際開發(fā)涉及較少,這里只作簡單介紹)但是通常進程之間是相互獨立的,每個進程都有獨立的內(nèi)存。通過共享內(nèi)存(nmap模塊),進程之間可以共享對象,使多個進程可以訪問同一個變量(地址相同,變量名可能不同)。多進程共享資源必然會導致進程間相互競爭,所以應該盡最大可能防止使用共享狀態(tài)。

線程

概念:線程是操作系統(tǒng)調(diào)度的最小單元

理解:1個進程包括1個或多個線程,相比較之下,線程占用資源更少,更高效,且一個進程的多個線程在執(zhí)行過程中共享內(nèi)存,毫無疑問,線程之間可以相互通信。而python的多進程編程主要依靠threading模塊

線程間通信:主要有兩種方式,一種是上鎖,上互斥鎖確保任意時刻只有一個線程具備修改全局變量的能力。另一種則是使用消息隊列,比較經(jīng)典的生產(chǎn)者、消費者模型就是這樣,一個負責生成,一個負責消費,所生成的產(chǎn)品存放在queue里,實現(xiàn)了不同線程間溝通。

多進程跟多線程的區(qū)別

由于進程的創(chuàng)建跟銷毀都涉及到系統(tǒng)資源的分配以及回收,導致多進程的開銷明顯大于多線程的開銷。

兩者的應用場景

對CPU密集型代碼(比如循環(huán)計算) - 多進程效率更高

對IO密集型代碼(比如文件操作,網(wǎng)絡爬蟲) - 多線程效率更高

理由:對于IO密集型操作,大部分消耗時間其實是等待時間,在等待時間中CPU是不需要工作的,那你在此期間提供雙CPU資源也是利用不上的,相反對于CPU密集型代碼,2個CPU干活肯定比一個CPU快很多。那么為什么多線程會對IO密集型代碼有用呢?這時因為python碰到等待會釋放GIL供新的線程使用,實現(xiàn)了線程間的切換。

到此這篇關(guān)于python多線程和多進程關(guān)系詳解的文章就介紹到這了,更多相關(guān)python多線程和多進程之間的聯(lián)系內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 如何查看Mac本機的Python3安裝路徑

    如何查看Mac本機的Python3安裝路徑

    這篇文章主要介紹了如何查看Mac本機的Python3安裝路徑問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • matplotlib 范圍選區(qū)(SpanSelector)的使用

    matplotlib 范圍選區(qū)(SpanSelector)的使用

    這篇文章主要介紹了matplotlib 范圍選區(qū)(SpanSelector)的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-02-02
  • Python中的enumerate函數(shù)使用方法詳解

    Python中的enumerate函數(shù)使用方法詳解

    enumerate()是python的內(nèi)置函數(shù),適用于python2.x和python3.x,這篇文章主要給大家介紹了關(guān)于Python中的enumerate函數(shù)使用方法的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-06-06
  • Python?reversed函數(shù)用法小結(jié)

    Python?reversed函數(shù)用法小結(jié)

    reversed函數(shù)是Python中的內(nèi)置函數(shù)之一,是對給定的序列返回一個逆序序列的迭代器,需要通過遍歷/list/next()等方法獲取作用后的值,本文給大家介紹Python?reversed函數(shù)及用法,感興趣的朋友一起看看吧
    2023-10-10
  • 如何用python編寫一個生成春聯(lián)軟件

    如何用python編寫一個生成春聯(lián)軟件

    大家好,本篇文章主要講的是如何用python編寫一個生成春聯(lián)軟件,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • Python實現(xiàn)批量將word轉(zhuǎn)html并將html內(nèi)容發(fā)布至網(wǎng)站的方法

    Python實現(xiàn)批量將word轉(zhuǎn)html并將html內(nèi)容發(fā)布至網(wǎng)站的方法

    這篇文章主要介紹了Python實現(xiàn)批量將word轉(zhuǎn)html并將html內(nèi)容發(fā)布至網(wǎng)站的方法,涉及Python調(diào)用第三方接口進行文件轉(zhuǎn)換及操作數(shù)據(jù)庫等相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • python語法 range() 序列類型range

    python語法 range() 序列類型range

    這篇文章主要介紹了python語法 range() 序列類型range,range是一種序列類型,range類型用于表示不可變的整數(shù)序列,下面小編整理了簡單內(nèi)容,需要的小伙伴可以參考一下
    2022-01-01
  • Python手寫回歸樹的實現(xiàn)

    Python手寫回歸樹的實現(xiàn)

    本文主要介紹了Python手寫回歸樹的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-06-06
  • python區(qū)分不同數(shù)據(jù)類型的方法

    python區(qū)分不同數(shù)據(jù)類型的方法

    這篇文章主要介紹了python區(qū)分不同數(shù)據(jù)類型的方法實例以及相關(guān)知識點,需要的朋友們學習下。
    2019-10-10
  • 淺談Python3中strip()、lstrip()、rstrip()用法詳解

    淺談Python3中strip()、lstrip()、rstrip()用法詳解

    這篇文章主要介紹了淺談Python3中strip()、lstrip()、rstrip()用法詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-04-04

最新評論