Python 多進(jìn)程和數(shù)據(jù)傳遞的理解
Python 多進(jìn)程和數(shù)據(jù)傳遞的理解
python不僅線程用的是系統(tǒng)原生線程,進(jìn)程也是用的原生進(jìn)程
進(jìn)程的用法和線程大同小異
import multiprocessing p = multiprocessing.Process(target=fun,args=())
線程的基本方法在進(jìn)程中都能夠使用
但是進(jìn)程和線程中有一個(gè)明顯的區(qū)別:可以實(shí)現(xiàn)多核的運(yùn)用
python本身會(huì)啟動(dòng)一個(gè)主進(jìn)程,并且擁有一個(gè)主線程把主進(jìn)程看做一家之主,那主線程也是他本身,其他線程就相當(dāng)于老婆們
而進(jìn)程,長(zhǎng)大了的兒子們,線程固然是不能分割的,一家人還是要團(tuán)結(jié),但是兒子自家的事務(wù),老子卻也不能插手,所以,一家只能占用一個(gè)CPU實(shí)現(xiàn)單核運(yùn)用的話,生多個(gè)兒子那必然就實(shí)現(xiàn)了多核運(yùn)用
GIL鎖住的,只是一個(gè)進(jìn)程,讓一家人團(tuán)結(jié)
但是一個(gè)進(jìn)程只有這么一把全量鎖,線程不能單獨(dú)跑,那就打包一起跑
多進(jìn)程就這樣完成了一般語言中多線程的優(yōu)化
數(shù)據(jù)傳遞
多線程,多進(jìn)程中總有要協(xié)同的工作,都涉及數(shù)據(jù)的交互,不過交互方式有些不同
信息進(jìn)行傳遞的時(shí)候,為了不阻塞執(zhí)行一般會(huì)將數(shù)據(jù)放入對(duì)列當(dāng)中而不是直接返回
線程中,由于都屬于同一個(gè)進(jìn)程,定義一個(gè)全局的隊(duì)列在各線程中就能夠壓入數(shù)據(jù)
進(jìn)程可能運(yùn)行在不同的CPU上,因此,相互間的傳遞不能在全局定義,只能通過創(chuàng)建時(shí)進(jìn)行傳入
內(nèi)部操作:傳入的隊(duì)列實(shí)際上并不是將引用傳入,然后直接操作隊(duì)列,這畢竟是不同的CPU上的工作
隊(duì)列的傳入實(shí)際上是隊(duì)列拷貝的傳入,通過pickle拷貝后進(jìn)行傳入,然后再pickle將數(shù)據(jù)傳回
import multiprocessing multiprocessing.Queue()
線程和進(jìn)程都有不同的隊(duì)列對(duì)象,以實(shí)現(xiàn)不同的數(shù)據(jù)交互,不能錯(cuò)位使用
如有疑問請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
- python多進(jìn)程共享變量
- 探究Python多進(jì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)程與多線程的使用
- Python多進(jìn)程同步Lock、Semaphore、Event實(shí)例
- python 多進(jìn)程通信模塊的簡(jiǎn)單實(shí)現(xiàn)
- Python控制多進(jìn)程與多線程并發(fā)數(shù)總結(jié)
- python多進(jìn)程操作實(shí)例
- Python實(shí)現(xiàn)多進(jìn)程共享數(shù)據(jù)的方法分析
相關(guān)文章
Pandas檢查dataFrame中的NaN實(shí)現(xiàn)
本文主要介紹了Pandas檢查dataFrame中的NaN實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01
Pytorch 實(shí)現(xiàn)變量類型轉(zhuǎn)換
這篇文章主要介紹了Pytorch 實(shí)現(xiàn)變量類型轉(zhuǎn)換操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-05-05
python實(shí)現(xiàn)的正則表達(dá)式功能入門教程【經(jīng)典】
這篇文章主要介紹了python實(shí)現(xiàn)的正則表達(dá)式功能,詳細(xì)分析了Python正則表達(dá)式中常用的各種符號(hào)、函數(shù)等的使用方法與注意事項(xiàng),需要的朋友可以參考下2017-06-06
python調(diào)用cmd命令時(shí)遇到的路徑空格問題和中文亂碼的解決
這篇文章主要介紹了python調(diào)用cmd命令時(shí)遇到的路徑空格問題和中文亂碼的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02
零基礎(chǔ)寫python爬蟲之使用Scrapy框架編寫爬蟲
前面的文章我們介紹了Python爬蟲框架Scrapy的安裝與配置等基本資料,本文我們就來看看如何使用Scrapy框架方便快捷的抓取一個(gè)網(wǎng)站的內(nèi)容,隨便選個(gè)小站(dmoz.org)來示例吧2014-11-11
Python標(biāo)準(zhǔn)庫學(xué)習(xí)之operator.itemgetter函數(shù)的使用
operator.itemgetter是Python標(biāo)準(zhǔn)庫operator模塊中的一個(gè)函數(shù),本文主要介紹了Python標(biāo)準(zhǔn)庫學(xué)習(xí)之operator.itemgetter函數(shù)的使用,具有一定的參考價(jià)值,感興趣的可以了解一下2024-07-07

