版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
進程間的通信進程間的通信摘要每個進程各自有不同的用戶地址空間,任何一個進程的全局變量在另一個進程中都看不到,所以進程之間要交換數(shù)據(jù)必須通過內(nèi)核,在內(nèi)核中開辟一塊緩沖區(qū),進程A把數(shù)據(jù)從用戶空間拷到內(nèi)核緩沖區(qū),進程B再從內(nèi)核緩沖區(qū)把數(shù)據(jù)讀走,內(nèi)核提供的這種機制稱為進程間通信。進程彼此之間互相隔離,要實現(xiàn)進程間通信(IPC),multiprocessing模塊支持兩種形式:隊列和管道,這兩種方式都是使用消息傳遞的。關(guān)鍵詞隊列管道11.進程間通信(IPC)方式一:隊列(推薦使用)2隊列先進先出,棧后進先出創(chuàng)建隊列的類Queue([maxsize]):創(chuàng)建共享的進程隊列,Queue是多進程安全的隊列,可以使用Queue實現(xiàn)多進程之間的數(shù)據(jù)傳遞。參數(shù)介紹:maxsize是隊列中允許最大項數(shù),省略則無大小限制q是隊列類的實例q.put方法用以插入數(shù)據(jù)到隊列中put方法還有兩個可選參數(shù):blocked和timeout。如果blocked為True(默認(rèn)值),并且timeout為正值,該方法會阻塞timeout指定的時間,直到該隊列有剩余的空間。如果超時,會拋出Queue.Full異常。如果blocked為False,但該Queue已滿,會立即拋出Queue.Full異常。q.get方法可以從隊列讀取并且刪除一個元素。get方法有兩個可選參數(shù):blocked和timeout。方法介紹:34方法介紹:
如果blocked為True(默認(rèn)值),并且timeout為正值,那么在等待時間內(nèi)沒有取到任何元素,會拋出Queue.Empty異常。如果blocked為False,有兩種情況存在,如果Queue有一個值可用,則立即返回該值,否則,如果隊列為空,則立即拋出Queue.Empty異常.q.empty():調(diào)用此方法時q為空則返回True,該結(jié)果不可靠,比如在返回True的過程中,如果隊列中又加入了項目。q.full():調(diào)用此方法時q已滿則返回True,該結(jié)果不可靠,比如在返回True的過程中,如果隊列中的項目被取走。q.qsize():返回隊列中目前項目的正確數(shù)量,結(jié)果也不可靠,理由同q.empty()和q.full()一樣5示例:輸出結(jié)果:62.生產(chǎn)者消費者模型·什么是生產(chǎn)者消費者模式?生產(chǎn)者消費者模式是通過一個容器來解決生產(chǎn)者和消費者的強耦合問題。生產(chǎn)者和消費者彼此之間不直接通訊,而通過阻塞隊列來進行通訊,所以生產(chǎn)者生產(chǎn)完數(shù)據(jù)之后不用等待消費者處理,直接扔給阻塞隊列,消費者不找生產(chǎn)者要數(shù)據(jù),而是直接從阻塞隊列里取,阻塞隊列就相當(dāng)于一個緩沖區(qū),平衡了生產(chǎn)者和消費者的處理能力?!槭裁匆褂蒙a(chǎn)者和消費者模式在進程世界里,生產(chǎn)者就是生產(chǎn)數(shù)據(jù)的進程,消費者就是消費數(shù)據(jù)的進程。在多進程開發(fā)當(dāng)中,如果生產(chǎn)者處理速度很快,而消費者處理速度很慢,那么生產(chǎn)者就必須等待消費者處理完,才能繼續(xù)生產(chǎn)數(shù)據(jù)。同樣的道理,如果消費者的處理能力大于生產(chǎn)者,那么消費者就必須等待生產(chǎn)者。為了解決這個問題于是引入了生產(chǎn)者和消費者模式。在并發(fā)編程中使用生產(chǎn)者和消費者模式能夠解決絕大多數(shù)并發(fā)問題。該模式通過平衡生產(chǎn)進程和消費進程的工作能力來提高程序的整體處理數(shù)據(jù)的速度。72.生產(chǎn)者消費者模型示例:基于隊列實現(xiàn)生產(chǎn)者消費者模型8輸出結(jié)果:93.進程間通信(IPC)方式二:管道與隊列的一發(fā)一收不同,管道是全雙工的,也就是兩個進程之間可以相互通信。創(chuàng)建管道的類:Pipe([duplex]):在進程之間創(chuàng)建一條管道,并返回元組(conn1,conn2),其中conn1,conn2表示管道兩端的連接對象,強調(diào)一點:必須在產(chǎn)生Process對象之前產(chǎn)生管道參數(shù)介紹:dumplex:默認(rèn)管道是全雙工的,如果將duplex射成False,conn1只能用于接收,conn2只能用于發(fā)送。10方法介紹:conn1.recv():接收conn2.send(obj)發(fā)送的對象。如果沒有消息可接收,recv方法會一直阻塞。如果連接的另外一端已經(jīng)關(guān)閉,那么recv方法會拋出EOFError。conn1.send(obj):通過連接發(fā)送對象。obj是與序列化兼容的任意對象conn1.close():關(guān)閉連接。如果conn1被垃圾回收,將自動調(diào)用此方法conn1.fileno():返回連接使用的整數(shù)文件描述符conn1.poll([timeout]):如果連接上的數(shù)據(jù)可用,返回True。ti
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年煤礦安全生產(chǎn)法律法規(guī)知識考試復(fù)習(xí)題庫及答案
- 委托二手房買賣合同的
- 國家基本藥物政策目錄及招標(biāo)相關(guān)政策解讀課件
- 二零二五年度車隊租賃車輛保險及理賠合同范本3篇
- 2025年度個人擔(dān)保貸款協(xié)議書2篇
- 2025年度環(huán)保技術(shù)合資企業(yè)個人股東股權(quán)轉(zhuǎn)讓協(xié)議書4篇
- 二零二五年度工業(yè)遺產(chǎn)廠房拆遷補償與文化傳承協(xié)議2篇
- 2025年鋼材貿(mào)易居間代理服務(wù)合同范本
- 二零二五年度旅游景區(qū)景點租賃服務(wù)協(xié)議3篇
- 二零二五年度自動化倉庫租賃運營合同3篇
- 寺院消防安全培訓(xùn)課件
- 比摩阻-管徑-流量計算公式
- 專題23平拋運動臨界問題相遇問題類平拋運和斜拋運動
- GB/T 42430-2023血液、尿液中乙醇、甲醇、正丙醇、丙酮、異丙醇和正丁醇檢驗
- 五年級數(shù)學(xué)應(yīng)用題100道
- 西方經(jīng)濟學(xué)(第二版)完整整套課件(馬工程)
- 高三開學(xué)收心班會課件
- GB/T 33688-2017選煤磁選設(shè)備工藝效果評定方法
- 科技計劃項目申報培訓(xùn)
- 591食堂不合格食品處置制度
- 黑布林繪本 Dad-for-Sale 出售爸爸課件
評論
0/150
提交評論