【黑馬程序員】Python編程學(xué)習(xí)之常用標(biāo)準(zhǔn)庫_第1頁
【黑馬程序員】Python編程學(xué)習(xí)之常用標(biāo)準(zhǔn)庫_第2頁
【黑馬程序員】Python編程學(xué)習(xí)之常用標(biāo)準(zhǔn)庫_第3頁
【黑馬程序員】Python編程學(xué)習(xí)之常用標(biāo)準(zhǔn)庫_第4頁
【黑馬程序員】Python編程學(xué)習(xí)之常用標(biāo)準(zhǔn)庫_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

I窗3黑馬程序員L傳智播客旗下高端IT教育品牌改變中國IT教育,我們正在行動【黑馬程序員】Python編程學(xué)習(xí)之常用標(biāo)準(zhǔn)庫Python入門教程完整版(懂中文就能學(xué)會)完整視頻:/course/273.html71912sxkqq課程資料:https://pan.baidu.eom/s/12-dymJ8FjWzh6b5NKJuP3Q提取碼:gqly 系統(tǒng)內(nèi)建函數(shù) 1■字符串str=’這是一個字符串?dāng)?shù)據(jù)測試數(shù)據(jù)‘對應(yīng)str[0]:獲取str字符串中下標(biāo)為0的字符。str[3]:獲取str字符串中下標(biāo)為3的字符。str[0:3]:獲取到字符串中從下標(biāo)為0到下標(biāo)為3的字符串。str.find():返回指定str字符串中是否存在指定的字符串?dāng)?shù)據(jù)信息;如果存在則返回字符串首字母的下標(biāo),如果不存在則返回-1。str.index():返回指定str字符串中是否存在指定的字符串?dāng)?shù)據(jù)信息;如果存在則返回字符串首字母的下標(biāo),如果不存在進(jìn)行錯誤異常處理。str.count():返回指定str字符串中被查找字符串存在的個數(shù)信息。len(str):返回指定str字符串的字符總長度;如果字符串為空,則返回值為0。str.replace(替換前字符','替換后字符',指定替換的次數(shù)):進(jìn)行指定str字符串中指定字符數(shù)據(jù)的替換操作,并將替換后的數(shù)據(jù)進(jìn)行返回。str.split("",切割次數(shù)):進(jìn)行指定字符串的切割,返回被切割后的字符串列表數(shù)據(jù)信息;如果切割次數(shù)不填,默認(rèn)進(jìn)行最大的切割次數(shù)。str.capitalize():將指定str字符串的第一個字符進(jìn)行大寫。str.startswithg配字符串?dāng)?shù)據(jù)):返回boolen類型,匹配指定str字符串是否以指定字符串?dāng)?shù)據(jù)開頭。資料領(lǐng)?。?Q1679806262視頻庫網(wǎng)址:資料領(lǐng)?。?Q1679806262黑馬程序員傳智播客旗下高端黑馬程序員傳智播客旗下高端IT教育品牌改變中國IT教育,我們正在行動str.endswithg配字符串?dāng)?shù)據(jù)):返回boolen類型,匹配指定str字符串是否以指定字符串?dāng)?shù)據(jù)結(jié)尾。str.lower():將指定的字符串?dāng)?shù)據(jù)信息進(jìn)行統(tǒng)一的小寫轉(zhuǎn)換并返回轉(zhuǎn)換后的數(shù)據(jù)。str.upper():將指定的字符串?dāng)?shù)據(jù)信息進(jìn)行統(tǒng)一的大寫轉(zhuǎn)換并返回轉(zhuǎn)換后的數(shù)據(jù)。str.ljust(指定返回的字符串長度):返回一個字符串,將指定str進(jìn)行左對齊,如果str字符串長度小于指定的長度,則進(jìn)行右側(cè)的空格補(bǔ)充操作。str.rjust(指定返回的字符串長度):返回一個字符串,將指定str進(jìn)行右對齊,如果str字符串長度小于指定的長度,則進(jìn)行左側(cè)的空格補(bǔ)充操作。str.center(制定返回的字符串長度):返回一個字符串,將制定str進(jìn)行中間對齊,如果str字符串長度小于指定的長度,則進(jìn)行兩邊的空格的補(bǔ)充操作。str.lstrip():返回字符串,刪除左側(cè)的空格。str.rstrip():返回字符串,刪除末尾的空格。str.rfind():類似find函數(shù),從指定字符串的右側(cè)開始進(jìn)行查找,返回查找到的字符串第一個字符的下標(biāo)。str.rindex():類似index函數(shù),從指定str字符串的左側(cè)開始進(jìn)行查找,返回查找到的字符串第一個字符串下標(biāo)。str.partitionG指定分割的字符串):從指定str字符串中,查找制定分割的字符串,返回一個列表包含它的前面部分,它自身和它的后面部分;如果字符串的匹配沒有成功,則返回它自身和前后兩個空字符。str.rpartitionG指定分割的字符串):類似partition函數(shù),只是指定的分割字符串是從右開始查找的。str.splitlines():進(jìn)行行分割,返回一個列表,以每行數(shù)據(jù)作為一個元素進(jìn)行保存。str.isdigit():返回boolen類型,判斷指定str字符串中的數(shù)據(jù)是否為字母或數(shù)字。str.isalpha():返回boolen類型,判斷指定str字符串中的數(shù)據(jù)是否為純字母。str.isalnum():返回boolen類型,判斷指定str字符串中的數(shù)據(jù)是否為純數(shù)字。資料領(lǐng)?。?Q1679806262視頻庫網(wǎng)址:資料領(lǐng)取:+Q1679806262黑馬程序員傳智播客旗下高端黑馬程序員傳智播客旗下高端IT教育品牌改變中國IT教育,我們正在行動str.isspace():返回boolen類型,判斷指定str字符串中的數(shù)據(jù)是否只包含空格。str.isupper():返回boolen類型,判斷指定str字符串中的數(shù)據(jù)是否為純大寫。str.islower():返回boolen類型,判斷指定str字符串中的數(shù)據(jù)是否為純小寫。mystr.join(str):將類表mystr中的數(shù)據(jù),根據(jù)指定的str字符串進(jìn)行拼接操作;返回拼接后的字符串?dāng)?shù)據(jù)信息。print("%0.1f",float(result*1.0)):進(jìn)行浮點(diǎn)數(shù)的轉(zhuǎn)換,并打印小數(shù)點(diǎn)后一位的數(shù)據(jù)print("%d*%d=%d"%(j,i,i*j),end=''):結(jié)束最后的換行2.^件流文件流對應(yīng)的基礎(chǔ)操作:f=open('文件名'/訪問模式');iff:返回boolen類型,判斷文件是否打開。w:打開一個文件只用于寫入;如果該文件已經(jīng)存在則將其覆蓋;如果該文件不存在,則創(chuàng)建一個新的文件。r:以只讀的方式打開文件;文件的指針將會放在文件的開頭;這個是默認(rèn)模式。a:打開一個文件用于追加;如果該文件已存在,文件指針將會放在文件的結(jié)尾;也就是說,新的內(nèi)容將會被寫入到已有內(nèi)容之后。如果該文件不存在,創(chuàng)建新文件進(jìn)行寫入。rb:以二進(jìn)制格式打開一個文件用于只讀,文件指針將會放在文件的開頭。這是默認(rèn)模式。wb:以二進(jìn)制格式打開一個文件用于寫入,如果該文件已存在則將其進(jìn)行覆蓋。如果該文件不存在則創(chuàng)建新文件。ab:以二進(jìn)制格式打開一個文件用于追加。如果該文件已存在,文件指針將會放在文件的結(jié)尾。也就是說,新的內(nèi)容將會被寫入到已有內(nèi)容之后;如果該文件不存在,創(chuàng)建新文件進(jìn)行寫入操作。資料領(lǐng)取:+Q1679806262視頻庫網(wǎng)址:資料領(lǐng)?。?Q1679806262黑馬程序員傳智播客旗下高端黑馬程序員傳智播客旗下高端IT教育品牌改變中國IT教育,我們正在行動r+:打開一個文件用于讀寫;文件指針將會放在文件的開頭。w+:打開一個文件用于讀寫;如果噶文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件a+:打開一個文件用于讀寫;如果該文件存在,文件指針將會放在文件的結(jié)尾。文件打開時會是追加模式。如果該文件不存在,創(chuàng)建新文件用于讀寫。rb+:以二進(jìn)制格式打開一個文件用于讀寫;文件指針將會放在文件的開頭。wb+:以二進(jìn)制格式打開一個文件用于讀寫;如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件。ab+:以二進(jìn)制格式打開一個文件用于追加;如果該文件已存在,文件指針將會放在文件的結(jié)尾;如果文件不存在,創(chuàng)建新文件用于讀寫。f.close():文件流操作結(jié)束后進(jìn)行關(guān)閉。f.wirte(寫入的內(nèi)容):打開文件后,將指定內(nèi)容寫入文件中。f.read(讀取數(shù)據(jù)的長度):使用read可以從文件中讀取指定長度的數(shù)據(jù),并將指針移到這條數(shù)據(jù)之后;默認(rèn)讀取全部數(shù)據(jù)。f.readline():讀取文件中一行數(shù)據(jù)的信息,指針移動的下一行。f.readlines():讀取整個文件的數(shù)據(jù)信息信息,返回一個歹I」表,歹I」表中每個元素為一行數(shù)據(jù)的信息。f.tell():查看當(dāng)前位置,就是指針對應(yīng)的位置。seek(offset,from):將指針定位到某個位置from:方向0:表示文件的開頭。:表示文件的當(dāng)前位置。:表示文件的末尾。offset:偏移量測試f.seek(5,0):文件開頭,向后偏移5個位置資料領(lǐng)?。?Q1679806262視頻庫網(wǎng)址:資料領(lǐng)取:+Q1679806262黑馬程序員傳智播客旗下高端黑馬程序員傳智播客旗下高端IT教育品牌改變中國IT教育,我們正在行動f.seek(-3,2):文件結(jié)尾,向前偏移3個位置3■列表.字典.元組操作1、列表:strList=['']:列表的創(chuàng)建。str='字符串’newStr='新的字符串‘。strList.叩pend:進(jìn)行列表數(shù)據(jù)信息的添加操作。strList[0]=newStr:根據(jù)下標(biāo),進(jìn)行列表指定元素數(shù)據(jù)信息的修改操作strinstrLsit:返回boolen類型,指定字符串信息是否在列表中存在。foriteminstrList:進(jìn)行列表數(shù)據(jù)的遍歷操作,item為元素值delstrList[0]:根據(jù)列表下標(biāo),刪除指定的列表元素。strList.pop():刪除列表最后一個元素的數(shù)據(jù)信息。strList.remove('元素的值'):根據(jù)元素的值進(jìn)行刪除操作。2、字典:修改元素:根據(jù)Key值進(jìn)行修改添加元素:infor['age']=18刪除元素:del清空字典中的數(shù)據(jù)信息:infor.clear3、字典的常見操作dic={1:'xiaohao',2:'xiaodong'}:創(chuàng)建一個字典對象。dic.keys():獲取字典所有對應(yīng)的鍵,以歹I」表的形式進(jìn)行返回。dic.valuses():獲取字典所有對應(yīng)的值,以歹I」表的形式進(jìn)行返回。dic.items():獲取字典中的鍵值數(shù)據(jù),以列表的形式返回,每個元素都一個元組,分別存放著鍵和值。dic.has_key(1):返回boolen類型,判斷鍵值是否存在4、元組:tuple=(123,4,5):創(chuàng)建一個元組。資料領(lǐng)取:+Q1679806262視頻庫網(wǎng)址:資料領(lǐng)?。?Q1679806262黑馬程序員傳智播客旗下高端黑馬程序員傳智播客旗下高端IT教育品牌改變中國IT教育,我們正在行動tuple[2]:根據(jù)下標(biāo)讀取到第三個元素。tuple[-2]:根據(jù)下標(biāo)讀取到倒數(shù)第二個元素。tuple[1:]:截取元組第二個元素到最后。cmp(tuple1,tuple2):比較兩個元組中的元素。max(tuple):返回元組中元素的最大值。min(tuple):返回元組中元素的最小值。tuple(seq):將列表轉(zhuǎn)換為元組。5、運(yùn)算符操作列表、字典、元組的技巧:1、len((123,4)):獲取到元組中元素的個數(shù)。2、(1,2,3,4)+(123,4,5);進(jìn)行兩個元組的合并,獲取到一個新的元組。3、['Hi']*4:創(chuàng)建一個新的列表,并將列表中的數(shù)據(jù)進(jìn)行復(fù)制四次。4、1in(1,2,3,4):判斷元素是否存在;返回boolen類型。4■異常捕獲定義:某些錯誤操作導(dǎo)致程序無法正常運(yùn)行異常捕獲:try:except(NameError,IOError),result:print(result)#返回具體的錯誤信息else:print("我是else")finally:print("我是finally")5、range:獲取1、help(range):range(stop)->listofintegersrange(start,stop[,step])->listofintegers2、參數(shù)分析:1、start:計數(shù)從start開始。默認(rèn)是從0開始。例如range(5)等價于資料領(lǐng)取:+Q1679806262視頻庫網(wǎng)址:資料領(lǐng)?。?Q1679806262黑馬程序員黑馬程序員傳智播客旗下高端IT教育品牌改變中國IT教育,我們正在行動range(0,5)。2、stop到stop結(jié)束,但不包括stop.例如:range(0,5)是[0,1,2,3,4]沒有5。3、step:每次跳躍的間距,默認(rèn)為1。例如:range(0,5)等價于range(0,5,1)。3、示例:a=range(5)list(a)6、map:函數(shù)1、help(map):m叩(...)map(function,sequence[,sequence,...])->list2、參數(shù)分析:1、function:是一個函數(shù)2、sequence:是一個或多個序列,取決于function需要幾個參數(shù)3、返回值是一個list3、語法:參數(shù)序列中的每一個元素分別調(diào)用function函數(shù)返回包含每次function函數(shù)返回值的list。4、示例函數(shù)需要一個參數(shù)map(lambdax:x*x,[1,2,3])[1,4,9]函數(shù)需要兩個參數(shù)map(lambdax,y:x+y,[1,2,3],[4,5,6])[5,7,9]函數(shù)為None,相當(dāng)于合并參數(shù)為元祖map(None,[1,3,5,7,9],[2,4,6,8,10])資料領(lǐng)?。?Q1679806262視頻庫網(wǎng)址:資料領(lǐng)?。?Q1679806262黑馬程序員傳智播客旗下高端黑馬程序員傳智播客旗下高端IT教育品牌改變中國IT教育,我們正在行動[(1,2),(3,4),(5,6),(7,8),(9,10)]#兩個序列參數(shù)個數(shù)不一致時,個數(shù)少的補(bǔ)Nonem叩(None,[1,3,5,7,9],[2,4,6])[(1,2),(3,4),(5,6),(7,None),(9,None)]7、filter:「1、help(filter):filter(...)filter(functionorNone,sequence)->list,tuple,orstringReturnthoseitemsofsequenceforwhichfunction(item)istrue.IffunctionisNone,returntheitemsthataretrue.Ifsequenceisatupleorstring,returnthesametype,elsereturnalist.2、參數(shù)分析:1、function:接受一^個參數(shù),返回布爾值True或False2、sequence:序列U可以是str,tuple,list3、3、語法filter函數(shù)會對序列參數(shù)sequence中的每個元素調(diào)用function函數(shù),最后返回的結(jié)果包含調(diào)用結(jié)果為True的元素。返回值的類型和參數(shù)sequence的類型相同4、示例filter(lambdax:x%2,[1,2,3,4])[1,3]filter(None,"she")'she'8、8、reduce:函1、help(reduce):視頻庫網(wǎng)址:1、help(reduce):視頻庫網(wǎng)址:資料領(lǐng)?。?Q1679806262黑馬程序員傳智播客旗下高端黑馬程序員傳智播客旗下高端IT教育品牌改變中國IT教育,我們正在行動reduce(...)reduce(function,sequence[,initial])->valueApplyafunctionoftwoargumentscumulativelytotheitemsofasequence,fromlefttoright,soastoreducethesequencetoasinglevalue.Forexample,reduce(lambdax,y:x+y,[1,2,3,4,5])calculates((((1+2)+3)+4)+5).Ifinitialispresent,itisplacedbeforetheitemsofthesequenceinthecalculation,andservesasadefaultwhenthesequenceisempty.2、參數(shù)分析:1、function:該函數(shù)有兩個參數(shù)2、sequence:序歹U可以是str,tuple,list3、initial:固定初始值3、3、語法reduce依次從sequence中取一個元素,和上一次調(diào)用function的結(jié)果做參數(shù)再次調(diào)用function.第一次調(diào)用function時,如果提供initial參數(shù),會以sequence中的第一個元素和initial作為參數(shù)調(diào)用function,否則會以序列sequence中的前兩個元素做參數(shù)調(diào)用function。注意function函數(shù)不能為None。4、示例reduce(lambdax,y:x+y,[1,2,3,4])10reduce(lambdax,y:x+y,[1,2,3,4],5)15reduce(lambdax,y:x+y,['aa','bb','cc'],'dd')資料領(lǐng)?。?Q1679806262視頻庫網(wǎng)址:資料領(lǐng)?。?Q1679806262黑馬程序員傳智播客旗下高端黑馬程序員傳智播客旗下高端IT教育品牌改變中國IT教育,我們正在行動'ddaabbcc'9、sorted:函數(shù)1、help(sorted):sorted(...)sorted(iterable,cmp=None,key=None,reverse=False)-->newsortedlist2、參數(shù)分析:自定義cmp比較函數(shù),返回三種情況:x<y返回-1x>y返回1x==y返回03、示例defcmp_ignore_case(s1,s2):u1=s1.upper()u2=s2.upper()ifu1<u2:return-1ifu1>u2:return1return系統(tǒng)庫函數(shù),幫助文檔查找1、庫函數(shù):print。、raw_input()系統(tǒng)給的叫庫函數(shù)2、用戶自定義函數(shù):如果系統(tǒng)中,沒有需要的功能,那么此時就需要自己開發(fā)一個,這就是自定義函數(shù)3、ipython下:dir(包名):查看該包下的對應(yīng)的函數(shù)信息資料領(lǐng)取:+Q1679806262視頻庫網(wǎng)址:資料領(lǐng)?。?Q1679806262黑馬程序員傳智播客旗下高端黑馬程序員傳智播客旗下高端IT教育品牌改變中國IT教育,我們正在行動help(包名):查看該包中的分裝的函數(shù)信息包名.path:可以獲取到指定包對應(yīng)的文件路徑 builtins:內(nèi)建函數(shù)默認(rèn)加載 os:操作系統(tǒng)接口 importos引用系統(tǒng)的包():判斷現(xiàn)在正在使用的平臺,widows返回'nt';Linux返回'posix'。os.getcwd():得到當(dāng)前工作的目錄。os.listdir():指定所有目錄下所有的文件和目錄名。os.remove():刪除指定文件。os.rmdir():刪除指定目錄。os.mkdir():創(chuàng)建目錄,只能建立一層。os.makedirs():遞歸創(chuàng)建目錄。os.path.isfile():判斷制定對象是否為文件。是返回True,否則False。os.path.isdir():判斷指定對象是否為目錄。是True,否則False。os.path.exists():檢驗指定的對象是否存在。是True,否則False。os.path.split():返回路徑的目錄和文件名。os.getcwd():獲得當(dāng)前工作的目錄。os.system():執(zhí)行shell命令。os.chdir():改變目錄到指定目錄。os.path.getsize():獲得文件的大小,如果為目錄,返回0。os.path.abspath():獲得絕對路徑。os.path.join(path,name):連接目錄和文件名。os.path.basename(path):返回文件名。os.path.dirname(path):返回文件路徑。sys:Python自身的運(yùn)行環(huán)境資料領(lǐng)?。?Q1679806262視頻庫網(wǎng)址:資料領(lǐng)?。?Q1679806262黑馬程序員傳智播客旗下高端黑馬程序員傳智播客旗下高端IT教育品牌改變中國IT教育,我們正在行動importsys引用系統(tǒng)的包sys.stdinsys.argv:獲取到執(zhí)行文件時,對應(yīng)的參數(shù)信息 functools:常用的工具 1、概念:functools是python2.5被引人的,一些工具函數(shù)放在此包里。2、操作:1、importfunctools:引用對應(yīng)的包2、dir(functools):查看包中對應(yīng)的工具函數(shù)1、partial函數(shù)(偏函數(shù)):1、概念:把一個函數(shù)的某些參數(shù)設(shè)置默認(rèn)值,返回一個新的函數(shù),調(diào)用這個新函數(shù)會更簡單。2、示例:importfunctoolsdefshowarg(*args,**kw):print(args)print(kw)p1=functools.partial(showarg,1,2,3)p1()p1(4,5,6)p1(a='python',b='itcast')p2=functools.partial(showarg,a=3,b='linux')p2()p2(1,2)資料領(lǐng)取:+Q1679806262視頻庫網(wǎng)址:資料領(lǐng)?。?Q1679806262黑馬程序員黑馬程序員傳智播客旗下高端IT教育品牌改變中國IT教育,我們正在行動p2(a='python',b='itcast')2、wraps函數(shù):1、概念:使用裝飾器時,有一些細(xì)節(jié)需要被注意。例如,被裝飾后的函數(shù)其實已經(jīng)是另外一個函數(shù)了(函數(shù)名等函數(shù)屬性會發(fā)生改變)。Python的functools包中提供了一個叫wraps的裝飾器來消除這樣的副作用2、示例:importfunctoolsdefnote(func):"notefunction"@functools.wraps(func)defwrapper():"wrapperfunction"print('notesomething')returnfunc()returnwrapper@notedeftest():"testfunction"print('Iamtest')test()print(test.__doc__)json:編碼和解碼JSON對象logging:記錄日志,調(diào)試資料領(lǐng)?。?Q1679806262視頻庫網(wǎng)址:資料領(lǐng)?。?Q1679806262黑馬程序員傳智播客旗下高端黑馬程序員傳智播客旗下高端IT教育品牌改變中國IT教育,我們正在行動 fork/multiprocessing:多進(jìn)程 importos:1、pid=os.fork():程序執(zhí)行至I」os.fork()時,操作系統(tǒng)會創(chuàng)建一個新的進(jìn)程(子進(jìn)程),然后復(fù)制父進(jìn)程的所有信息到子進(jìn)程中;然后父進(jìn)程和子進(jìn)程都會從fork()函數(shù)中得到一個返回值,其進(jìn)程中這個值一定是0,而父進(jìn)程中是子進(jìn)程的id號;主:fock()函數(shù)只能在Unix/Linux/Mac上運(yùn)行,windows不可以運(yùn)行。importos#注意,fork函數(shù),只在Unix/Linux/Mac上運(yùn)行,windows不可以pid=os.fork()ifpid==0:print('哈哈1')else:print('哈哈2')os.getpid():獲取到當(dāng)前進(jìn)程的PID號os.getppid():獲取到父進(jìn)程的PID號2、進(jìn)程創(chuàng)建的第二種方式:frommultiprocessingimportProcess:引用對應(yīng)的包。p=Process(target=run_proc,args=('test',)):調(diào)用Process類,進(jìn)行進(jìn)程對象的創(chuàng)建操作。為參數(shù)target賦值進(jìn)程要實現(xiàn)的方法,為參數(shù)args賦值方法中傳入對應(yīng)的參數(shù)。p.start():開啟執(zhí)行對應(yīng)的進(jìn)程操作。資料領(lǐng)?。?Q1679806262視頻庫網(wǎng)址:資料領(lǐng)?。?Q1679806262黑馬程序員傳智播客旗下高端黑馬程序員傳智播客旗下高端IT教育品牌改變中國IT教育,我們正在行動p.join():等待當(dāng)前進(jìn)程執(zhí)行結(jié)束,可以等待子進(jìn)程結(jié)束后再繼續(xù)向下運(yùn)行,通常用于進(jìn)程間的同步。multiprocessing.cpu_count():獲取到進(jìn)程執(zhí)行的所使用的cpu的內(nèi)核個數(shù)。pipe=multiprocessing.Pipe():管道實現(xiàn)進(jìn)程間的通訊。一個管道有兩個端口,分別為pipe[0]與pipe[1]pipe[0].send(向管道中添加的數(shù)據(jù)):管道的添加操作。pipe[0].recv():從管道中取出對應(yīng)的數(shù)據(jù)信息、。3、frommultiprocessingimportProcess,Queue:應(yīng)用對應(yīng)的包,為實現(xiàn)進(jìn)程之間的通信操作;管道的倆個端一個是負(fù)責(zé)向里面寫入數(shù)據(jù),一個是負(fù)責(zé)向外面讀取數(shù)據(jù)。q=Queue():創(chuàng)建一個隊列對象。4戶仇(要添加到隊列中的數(shù)據(jù)信息):將制定的數(shù)據(jù)添加到隊列當(dāng)中去。q.get(True):從隊列1」中要提取出的隊列媵攵據(jù)信息。q.empty():判斷當(dāng)前隊列是否為空。 threading:多線程 1、線程應(yīng)用的第一種模式thread模塊是比較底層的模塊importthread:引用對應(yīng)的模塊包。thread.start_new_thread(defName,())創(chuàng)建開啟一個新的線程;第一個參數(shù)為新線程要執(zhí)行的方法,第二個參數(shù)為元組傳遞執(zhí)行方法對應(yīng)需要參數(shù)注:python元組為一個時需要(元素,)一個元素加一個‘,’進(jìn)行表示。thread.exit_thread():主線程調(diào)用該方法表示所有的線程結(jié)束操作;子線程通過調(diào)用exit.thread()的方法來表示實現(xiàn)當(dāng)前子線程的結(jié)束操作。thread.join():python的Thread類中還提供了join()方法,使得一個線程可以等待另一個線程執(zhí)行結(jié)束后再繼續(xù)運(yùn)行。這個方法還可以設(shè)定一個timeout參數(shù),避免無休止的等待。因為兩個線程順序完成,看起來象一個線程,資料領(lǐng)?。?Q1679806262視頻庫網(wǎng)址:資料領(lǐng)?。?Q1679806262黑馬程序員傳智播客旗下高端黑馬程序員傳智播客旗下高端IT教育品牌改變中國IT教育,我們正在行動所以稱為線程的合并thread.setDaemon(True):默認(rèn)情況主線程退出時會等待子線程的結(jié)束,如果希望主線程不等待子線程,可以設(shè)置子線程為后臺線程,主線程退出,子線程隨即結(jié)束。2、線程應(yīng)用的第二種模式threading模塊是對thread模塊進(jìn)行了一定的封裝,可以更方便我們的使用。importthreading:引用對應(yīng)的模塊包。myThread=threading.Thread(target=defName,args=('Alice',))創(chuàng)建一個線程,target賦值要執(zhí)行線程的方法,args復(fù)制執(zhí)行方法需要的參數(shù)信息。myThread.start():線程開始執(zhí)行。num=len(threading.enumerate):查看當(dāng)前執(zhí)行的線程的數(shù)量。3、線程的應(yīng)用的第三種方式創(chuàng)建一個線程類,繼承基類threading.Thead;重寫基類的defrun(self):方法,將該線程要執(zhí)行的程序?qū)懺谠摲椒ㄖ?。classMyThread(threading.Thread):創(chuàng)建一個線程類進(jìn)行基類構(gòu)造函數(shù)的創(chuàng)建操作def__init__(self,name,time):threading.Thread.__init__(self,name='可以為線程的名字進(jìn)行復(fù)制')myThread=MyThread():線程對象的創(chuàng)建。myThread.start():該線程執(zhí)行。4、threading模塊中定義了Lock()類,可以方便的處理鎖定。mutex=threading.Lock():互斥鎖對象的創(chuàng)建。ifmutex.acquire([blocking]):進(jìn)行鎖定,鎖定成功后返回true;鎖定方法acquire??梢杂幸籢個blocking參數(shù)。如果設(shè)定blocking為True,則當(dāng)前線程會堵塞,直到獲取到這個鎖為止(如果沒有指定,那么默認(rèn)為True);如果設(shè)定blocking為False,則當(dāng)前線程不會堵塞。資料領(lǐng)?。?Q1679806262視頻庫網(wǎng)址:資料領(lǐng)?。?Q1679806262黑馬程序員黑馬程序員傳智播客旗下高端IT教育品牌改變中國IT教育,我們正在行動mutex.release():執(zhí)行完程序內(nèi)容后進(jìn)行鎖的釋放操作。5、支持同一線程多次請求同一資源,python提供了可重入鎖。RLock對象中,同時維護(hù)著一個Lock和一個counter變量;counter變量存儲acquire的次數(shù),從而使得資源可以多次被acquire;直到一個線程中的所有的acquire被release,其他的線程才可以獲得資源mutex=threading.RLock():創(chuàng)建可重入鎖對象。mutex.acquire():進(jìn)行上鎖。mutex.release():進(jìn)行釋放。6、python提供的Condition對象提供了對復(fù)雜線程同步問題的支持;Condition被稱為條件變量;Condition維護(hù)著一個鎖和一個waiting池。con=threading.Condition():創(chuàng)建條件變量對象;可以接受一^個Lock/RLock對象作為參數(shù),如果沒有指定則內(nèi)部默認(rèn)創(chuàng)建一個RLockcon.acquire():進(jìn)行加鎖。con.wait():線程會釋放Condition內(nèi)部的鎖并進(jìn)入blocked(堵塞)狀態(tài),同時在waiting池中記錄這個線程。con.notify():Condition對象會從waiting池中挑選一^個線程,通知其調(diào)用acquire方法嘗試取到鎖。con.notifyAll():Condition對象通知waiting池中所有的線程,嘗試acquire內(nèi)部鎖。作用防止有的線程永遠(yuǎn)處于沉默狀態(tài)。con.release():進(jìn)行釋放。threading.Event可以是一個線程等待其他線程的通知。其內(nèi)置了一個標(biāo)志,初始值為False。線程通過wait()方法進(jìn)入等待狀態(tài),直到另一個線程調(diào)度set()方法將內(nèi)置標(biāo)志設(shè)置為True是,Event通知所有等待狀態(tài)的線程回復(fù)運(yùn)行。還可以用isSet()方法查詢Event對象內(nèi)置狀態(tài)的當(dāng)前值。event=threading.Event():進(jìn)行對應(yīng)Envent對象的創(chuàng)建。def__init__(self,threadName,event):self.threadEvent=event:重構(gòu)對應(yīng)threading.Thread基類中__init__的方法。資料領(lǐng)?。?Q1679806262資料領(lǐng)?。?Q1679806262黑馬程序員傳智播客旗下高端IT教育品牌改變中國IT教育,我們正在行動self.threadEvent.wait():使線程進(jìn)入等待狀態(tài)。event.set():啟動waiting池中等待的線程。 Queue:隊列 fromQueueimportQueue:引用對應(yīng)的模塊包。queue=Queue():創(chuàng)建一個隊列對象。queue.qsize():獲取隊列I」中元素的數(shù)量。queue.put(向隊列I」中添加的數(shù)據(jù)):想隊列I」中添加元素。queue.set():從隊列中取出元素。queue.empty():判斷隊列I」是否為空。 copy:拷貝 time:時間 datetime:日期和時間 calendar:日歷 hashlib:加密算法 random:生成隨機(jī)數(shù)

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論