Python 多進(jìn)程和數(shù)據(jù)傳遞的理解
Python 多進(jìn)程和數(shù)據(jù)傳遞的理解
python不僅線(xiàn)程用的是系統(tǒng)原生線(xiàn)程,進(jìn)程也是用的原生進(jìn)程
進(jìn)程的用法和線(xiàn)程大同小異
import multiprocessing p = multiprocessing.Process(target=fun,args=())
線(xiàn)程的基本方法在進(jìn)程中都能夠使用
但是進(jìn)程和線(xiàn)程中有一個(gè)明顯的區(qū)別:可以實(shí)現(xiàn)多核的運(yùn)用
python本身會(huì)啟動(dòng)一個(gè)主進(jìn)程,并且擁有一個(gè)主線(xiàn)程把主進(jìn)程看做一家之主,那主線(xiàn)程也是他本身,其他線(xiàn)程就相當(dāng)于老婆們
而進(jìn)程,長(zhǎng)大了的兒子們,線(xiàn)程固然是不能分割的,一家人還是要團(tuán)結(jié),但是兒子自家的事務(wù),老子卻也不能插手,所以,一家只能占用一個(gè)CPU實(shí)現(xiàn)單核運(yùn)用的話(huà),生多個(gè)兒子那必然就實(shí)現(xiàn)了多核運(yùn)用
GIL鎖住的,只是一個(gè)進(jìn)程,讓一家人團(tuán)結(jié)
但是一個(gè)進(jìn)程只有這么一把全量鎖,線(xiàn)程不能單獨(dú)跑,那就打包一起跑
多進(jìn)程就這樣完成了一般語(yǔ)言中多線(xiàn)程的優(yōu)化
數(shù)據(jù)傳遞
多線(xiàn)程,多進(jìn)程中總有要協(xié)同的工作,都涉及數(shù)據(jù)的交互,不過(guò)交互方式有些不同
信息進(jìn)行傳遞的時(shí)候,為了不阻塞執(zhí)行一般會(huì)將數(shù)據(jù)放入對(duì)列當(dāng)中而不是直接返回
線(xiàn)程中,由于都屬于同一個(gè)進(jìn)程,定義一個(gè)全局的隊(duì)列在各線(xiàn)程中就能夠壓入數(shù)據(jù)
進(jìn)程可能運(yùn)行在不同的CPU上,因此,相互間的傳遞不能在全局定義,只能通過(guò)創(chuàng)建時(shí)進(jìn)行傳入
內(nèi)部操作:傳入的隊(duì)列實(shí)際上并不是將引用傳入,然后直接操作隊(duì)列,這畢竟是不同的CPU上的工作
隊(duì)列的傳入實(shí)際上是隊(duì)列拷貝的傳入,通過(guò)pickle拷貝后進(jìn)行傳入,然后再pickle將數(shù)據(jù)傳回
import multiprocessing multiprocessing.Queue()
線(xiàn)程和進(jìn)程都有不同的隊(duì)列對(duì)象,以實(shí)現(xiàn)不同的數(shù)據(jù)交互,不能錯(cuò)位使用
如有疑問(wèn)請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
- python多進(jìn)程共享變量
- 探究Python多進(jìn)程編程下線(xiàn)程之間變量的共享問(wèn)題
- Python實(shí)現(xiàn) 多進(jìn)程導(dǎo)入CSV數(shù)據(jù)到 MySQL
- Python利用多進(jìn)程將大量數(shù)據(jù)放入有限內(nèi)存的教程
- Python多進(jìn)程并發(fā)(multiprocessing)用法實(shí)例詳解
- 淺析Python中的多進(jìn)程與多線(xiàn)程的使用
- Python多進(jìn)程同步Lock、Semaphore、Event實(shí)例
- python 多進(jìn)程通信模塊的簡(jiǎn)單實(shí)現(xiàn)
- Python控制多進(jìn)程與多線(xiàn)程并發(fā)數(shù)總結(jié)
- python多進(jìn)程操作實(shí)例
- Python實(shí)現(xiàn)多進(jìn)程共享數(shù)據(jù)的方法分析
相關(guān)文章
python獲取指定網(wǎng)頁(yè)上所有超鏈接的方法
這篇文章主要介紹了python獲取指定網(wǎng)頁(yè)上所有超鏈接的方法,涉及Python使用urllib2模塊操作網(wǎng)頁(yè)抓取的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04python判斷一個(gè)數(shù)是否能被另一個(gè)整數(shù)整除的實(shí)例
今天小編就為大家分享一篇python判斷一個(gè)數(shù)是否能被另一個(gè)整數(shù)整除的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-12-12用python寫(xiě)的一個(gè)wordpress的采集程序
在學(xué)習(xí)python的過(guò)程中,經(jīng)過(guò)不斷的嘗試及努力,終于完成了第一個(gè)像樣的python程序,雖然還有很多需要優(yōu)化的地方,但是目前基本上實(shí)現(xiàn)了我所要求的功能,需要的朋友可以參考下2016-02-02python腳本調(diào)用iftop 統(tǒng)計(jì)業(yè)務(wù)應(yīng)用流量的思路詳解
這篇文章主要介紹了python腳本調(diào)用iftop 統(tǒng)計(jì)業(yè)務(wù)應(yīng)用流量的思路詳解,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-10-10Python必備技巧之Pandas數(shù)據(jù)合并函數(shù)
Pandas中一共有五個(gè)數(shù)據(jù)合并函數(shù),分別為:concat、append、merge、join、combine,本文詳細(xì)講解這五個(gè)函數(shù)的使用方法,需要的可以參考一下2022-03-03Django 接收Post請(qǐng)求數(shù)據(jù),并保存到數(shù)據(jù)庫(kù)的實(shí)現(xiàn)方法
今天小編就為大家分享一篇Django 接收Post請(qǐng)求數(shù)據(jù),并保存到數(shù)據(jù)庫(kù)的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-07-07PyCharm Community安裝與配置的詳細(xì)教程
這篇文章主要介紹了PyCharm Community安裝與配置的詳細(xì)教程,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11