




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第13章-進(jìn)程與線程馬馳率風(fēng),羊致清和本章目標(biāo)了解什么是程序與進(jìn)程掌握創(chuàng)建進(jìn)程的方式掌握進(jìn)程之間的通信了解進(jìn)程與線程的概述掌握創(chuàng)建線程的方式掌握線程之間的通信方式掌握生產(chǎn)者與消費者模式馬馳率風(fēng),羊致清和初識程序與進(jìn)程程序英文單詞為Program,是指一系列有序指令的集合,使用編程語言所編寫,用于實現(xiàn)一定的功能馬馳率風(fēng),羊致清和初識程序與進(jìn)程進(jìn)程進(jìn)程則是指啟動后的程序,系統(tǒng)會為進(jìn)程分配內(nèi)存空間馬馳率風(fēng),羊致清和創(chuàng)建進(jìn)程的方式第一種創(chuàng)建進(jìn)程的語法構(gòu):
Process(group=None,target,name,args,kwargs)參數(shù)說明:group:表示分組,實際上不使用,值默認(rèn)為None即可target:表示子進(jìn)程要執(zhí)行的任務(wù),支持函數(shù)名name:表示子進(jìn)程的名稱args:表示調(diào)用函數(shù)的位置參數(shù),以元組的形式進(jìn)行傳遞kwargs:表示調(diào)用函數(shù)的關(guān)鍵字參數(shù),以字典的形式進(jìn)行傳遞馬馳率風(fēng),羊致清和創(chuàng)建進(jìn)程的方式方法/屬性名稱功能描述name當(dāng)前進(jìn)程實例別名,默認(rèn)為Process-Npid當(dāng)前進(jìn)程對象的PID值is_alive()進(jìn)程是否執(zhí)行完,沒執(zhí)行完結(jié)果為True,否則為Falsejoin(timeout)等待結(jié)束或等待timeout秒start()啟動進(jìn)程run()如果沒有指定target參數(shù),則啟動進(jìn)程后,會調(diào)用父類中的run方法terminate()強(qiáng)制終止進(jìn)程馬馳率風(fēng),羊致清和創(chuàng)建進(jìn)程的方式第二種創(chuàng)建進(jìn)程的語法構(gòu):
class子進(jìn)程(Process):pass馬馳率風(fēng),羊致清和Pool進(jìn)程池進(jìn)程池的原理是:創(chuàng)建一個進(jìn)程池,并設(shè)置進(jìn)程池中最大的進(jìn)程數(shù)量。假設(shè)進(jìn)程池中最大的進(jìn)程數(shù)為3,現(xiàn)在有10個任務(wù)需要執(zhí)行,那么進(jìn)程池一次可以執(zhí)行3個任務(wù),4次即可完成全部任務(wù)的執(zhí)行。創(chuàng)建進(jìn)程池的語法結(jié)構(gòu):
進(jìn)程池對象=Pool(N)馬馳率風(fēng),羊致清和Pool進(jìn)程池方法名功能描述apply_async(func,args,kwargs)使用非阻塞方式調(diào)用函數(shù)funcapply(func,args,kwargs)使用阻塞方式調(diào)用函數(shù)funcclose()關(guān)閉進(jìn)程池,不再接收新任務(wù)terminate()不管任務(wù)是否完成,立即終止join()阻塞主進(jìn)程,必須在terminate()或close()之后使用馬馳率風(fēng),羊致清和并發(fā)和并行并發(fā)是指兩個或多個事件同一時間間隔發(fā)生,多個任務(wù)被交替輪換著執(zhí)行,比如A事件是吃蘋果,在吃蘋果的過程中有快遞員敲門讓你收下快遞,收快遞就是B事件,那么收完快遞繼續(xù)吃沒吃完的蘋果。這就是并發(fā)。馬馳率風(fēng),羊致清和并發(fā)和并行并行指兩個或多個事件在同一時刻發(fā)生,多個任務(wù)在同一時刻在多個處理器上同時執(zhí)行。比如A事件是泡腳,B事件是打電話,C事件是記錄電話內(nèi)容,這三件時則可以在同一時刻發(fā)生,這就是并行。馬馳率風(fēng),羊致清和進(jìn)程之間的通信100多個進(jìn)程之間數(shù)據(jù)可以共享嗎?進(jìn)程A進(jìn)程Baa+=30a-=50馬馳率風(fēng),羊致清和進(jìn)程之間的通信各進(jìn)程之間的數(shù)據(jù)操作馬馳率風(fēng),羊致清和進(jìn)程之間的通信進(jìn)程之間可以通過隊列(Queue)進(jìn)行通信,隊列是一種先進(jìn)先出(FirstInFirstOut)的數(shù)據(jù)結(jié)構(gòu)創(chuàng)建隊列的語法結(jié)構(gòu):
隊列對象=Queue(N)馬馳率風(fēng),羊致清和進(jìn)程之間的通信方法名稱功能描述qsize()獲取當(dāng)前隊列包含的消息數(shù)量empty()判斷隊列是否為空,為空結(jié)果為True,否則為Falsefull()判斷隊列是否滿了,滿結(jié)果為True,否則為Falseget(block=True)獲取隊列中的一條消息,然后從隊列中移除,block默認(rèn)值為Trueget_nowait()相當(dāng)于get(block=False),消息隊列為空時,拋出異常put(item,block=True)將item消息放入隊列,block默認(rèn)為Trueput_nowait(item)相當(dāng)于put(item,block=False)馬馳率風(fēng),羊致清和進(jìn)程之間的通信使用隊列實現(xiàn)進(jìn)程之間通信的原理是什么呢?馬馳率風(fēng),羊致清和線程線程線程是CPU可調(diào)度的最小單位,被包含在進(jìn)程中,是進(jìn)程中實際的運作單位。一個進(jìn)程中可以擁有N多個線程并發(fā)執(zhí)行,而每個線程并行執(zhí)行不同的任務(wù)。程序進(jìn)程2進(jìn)程1進(jìn)程3線程A線程B線程C馬馳率風(fēng),羊致清和創(chuàng)建線程的方式函數(shù)式創(chuàng)建線程的語法結(jié)構(gòu): t=Thread(group,target,name,args,kwargs)參數(shù)說明:group:創(chuàng)建線程對象的進(jìn)程組target:創(chuàng)建的線程對象所要執(zhí)行的目標(biāo)函數(shù)name:創(chuàng)建線程對象的名稱,默認(rèn)為“Tread-n”args:用元組以位置參數(shù)的形式傳入target對應(yīng)函數(shù)的參數(shù)kwargs:用字典以關(guān)鍵字參數(shù)的形式傳入target對應(yīng)函數(shù)的參數(shù)馬馳率風(fēng),羊致清和創(chuàng)建線程的方式使用Thread子類創(chuàng)建線程的操作步驟是:自定義類繼承threading模塊下的Thread類實現(xiàn)run方法馬馳率風(fēng),羊致清和線程之間的通信線程之間的數(shù)據(jù)可以共享嗎?100線程A線程Baa+=30a-=50馬馳率風(fēng),羊致清和線程之間的通信線程之間數(shù)據(jù)共享分析圖馬馳率風(fēng),羊致清和線程操作共享數(shù)據(jù)的安全性問題50ticket全局變量線程A線程B線程C馬馳率風(fēng),羊致清和線程操作共享數(shù)據(jù)的安全性問題共享數(shù)據(jù)線程A鎖定狀態(tài)共享數(shù)據(jù)非鎖定狀態(tài)acquire()方法release()方法Lock馬馳率風(fēng),羊致清和生產(chǎn)者與消費者模式生產(chǎn)者與消費者模式是線程模型中的經(jīng)典問題,與編程語言無關(guān)。當(dāng)程序中出現(xiàn)了明確的兩類任務(wù),一個任務(wù)負(fù)責(zé)生產(chǎn)數(shù)據(jù),一個任務(wù)負(fù)責(zé)處理生產(chǎn)的數(shù)據(jù)時就可以使用該模式。馬馳率風(fēng),羊致清和生產(chǎn)者與消費者模式Python內(nèi)置模塊queue中的Queue類方法名稱功能描述put(item)向隊列中放置數(shù)據(jù),如果隊列為滿,則阻塞get()從隊列中取走數(shù)據(jù),如果隊列為空,則阻塞join()如果隊列不為空,則等待隊列變?yōu)榭誸ask_done()消費者從隊列中取走一項數(shù)據(jù),當(dāng)隊列變?yōu)榭諘r,喚醒調(diào)用join()的線程馬馳率風(fēng),羊致清和本章總結(jié)程序:是指一系列有序指令的集合進(jìn)程:啟動后的程序稱為進(jìn)程,系統(tǒng)會為進(jìn)程分配內(nèi)存空間。創(chuàng)建進(jìn)程的語法結(jié)構(gòu)Process(group=None,target,name,args,kwargs)進(jìn)程池:當(dāng)需要上百、上千個進(jìn)程的時候,就可以使用進(jìn)程池Pool創(chuàng)建進(jìn)程池的語法結(jié)構(gòu)進(jìn)程池對象=Pool(N)并發(fā):是指兩個或多個事件同一時間間隔發(fā)生,多個任務(wù)被交替輪換著執(zhí)行并行:是指兩個或多個事件在同一時刻發(fā)生,多個任務(wù)在同一時刻在多個處理器上同時執(zhí)行馬馳率風(fēng),羊致清和本章總結(jié)進(jìn)程之間不存在共享數(shù)據(jù),但可以使用隊列進(jìn)行通信線程是CPU可調(diào)度的最小單位,被包含在進(jìn)程中,是進(jìn)程中實際
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 書法代售合同范本
- 門診研究課題申報書
- 公司收購股權(quán)合同范本
- 廠場租賃合同范本
- 職業(yè) 課題申報書
- 醫(yī)療會議服務(wù)合同范本
- 員工入職合同范本文本
- 【復(fù)習(xí)大串講】【中職專用】高二語文上學(xué)期期末期末綜合測試題(二)(職業(yè)模塊)(解析版)
- 行動導(dǎo)向課題申報書
- 三方租賃合同范本
- 皮膚性病學(xué)課件:濕疹皮炎
- 綠化養(yǎng)護(hù)重點難點分析及解決措施
- 醫(yī)療垃圾管理及手衛(wèi)生培訓(xùn)PPT課件
- 一體化學(xué)工服務(wù)平臺、人事管理系統(tǒng)、科研管理系統(tǒng)建設(shè)方案
- 市場營銷學(xué)課后習(xí)題與答案
- 嚇數(shù)基礎(chǔ)知識共20
- 常暗之廂(7規(guī)則-簡體修正)
- 10kV變電所設(shè)備檢修內(nèi)容與周期表
- 井控系統(tǒng)操作維護(hù)與保養(yǎng)規(guī)程
- 電子產(chǎn)品高可靠性裝聯(lián)工藝下
- 越南北部工業(yè)區(qū)資料(1060707)
評論
0/150
提交評論