




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第python中的多cpu并行編程目錄多cpu并行編程安裝使用submit函數(shù)定義多核cpu并行計(jì)算
多cpu并行編程
python多線程只能算并發(fā),因?yàn)樗悄苁褂靡粋€(gè)cpu內(nèi)核python下pp包支持多cpu并行計(jì)算
安裝
pipinstallpp
使用
#-*-coding:UTF-8-*-
importmath,sys,time
importpp
defIsPrime(n):
"""返回n是否是素?cái)?shù)"""
ifnotisinstance(n,int):
raiseTypeError("argumentpassedtois_primeisnotof'int'type")
ifn2:
returnFalse
ifn==2:
returnTrue
max=int(math.ceil(math.sqrt(n)))
i=2
whilei=max:
ifn%i==0:
returnFalse
i+=1
returnTrue
defSumPrimes(n):
foriinxrange(15):
sum([xforxinxrange(2,n)ifIsPrime(x)])
"""計(jì)算從2-n之間的所有素?cái)?shù)之和"""
returnsum([xforxinxrange(2,n)ifIsPrime(x)])
inputs=(100000,100100,100200,100300,100400,100500,100600,100700)
#start_time=time.time()
#forinputininputs:
#printSumPrimes(input)
#print'單線程執(zhí)行,總耗時(shí)',time.time()-start_time,'s'
##tupleofallparallelpythonserverstoconnectwith
ppservers=()
#ppservers=("",)
iflen(sys.argv)1:
ncpus=int(sys.argv[1])
#Createsjobserverwithncpusworkers
job_server=pp.Server(ncpus,ppservers=ppservers)
else:
#Createsjobserverwithautomaticallydetectednumberofworkers
job_server=pp.Server(ppservers=ppservers)
print"pp可以用的工作核心線程數(shù)",job_server.get_ncpus(),"workers"
start_time=time.time()
jobs=[(input,job_server.submit(SumPrimes,(input,),(IsPrime,),("math",)))forinputininputs]#submit提交任務(wù)
forinput,jobinjobs:
print"Sumofprimesbelow",input,"is",job()#job()獲取方法執(zhí)行結(jié)果
print"多線程下執(zhí)行耗時(shí):",time.time()-start_time,"s"
job_server.print_stats()#輸出執(zhí)行信息
執(zhí)行結(jié)果
pp可以用的工作核心線程數(shù)4workers
Sumofprimesbelow100000is454396537
Sumofprimesbelow100100is454996777
Sumofprimesbelow100200is455898156
Sumofprimesbelow100300is456700218
Sumofprimesbelow100400is457603451
Sumofprimesbelow100500is458407033
Sumofprimesbelow100600is459412387
Sumofprimesbelow100700is460217613
多線程下執(zhí)行耗時(shí):15.4971420765s
Jobexecutionstatistics:
jobcount|%ofalljobs|jobtimesum|timeperjob|jobserver
8|100.00|60.9828|7.622844|local
Timeelapsedsinceservercreation15.4972219467
0activetasks,4cores
submit函數(shù)定義
defsubmit(self,func,args=(),depfuncs=(),modules=(),
callback=None,callbackargs=(),group='default',globals=None):
"""Submitsfunctiontotheexecutionqueue
func-functiontobeexecuted執(zhí)行的方法
args-tuplewithargumentsofthe'func'方法傳入的參數(shù),使用元組
depfuncs-tuplewithfunctionswhichmightbecalledfrom'func'傳入自己寫的方法,元組
modules-tuplewithmodulenamestoimport傳入模塊
callback-callbackfunctionwhichwillbecalledwithargument
listequaltocallbackargs+(result,)
assoonascalculationisdone
callbackargs-additionalargumentsforcallbackfunction
group-jobgroup,isusedwhenwait(group)iscalledtowaitfor
jobsinagivengrouptofinish
globals-dictionaryfromwhichallmodules,functionsandclasses
willbeimported,forinstance:globals=globals()
"""
多核cpu并行計(jì)算
多進(jìn)程實(shí)現(xiàn)并行計(jì)算的簡單示例這里我們開兩個(gè)進(jìn)程,計(jì)算任務(wù)也簡潔明了
#多進(jìn)程
importmultiprocessingasmp
defjob(q,a,b):
print('aaa')
q.put(a**1000+b*1000)#把計(jì)算結(jié)果放到隊(duì)列
#多進(jìn)程
if__name__=='__main__':
q=mp.Queue()#一個(gè)隊(duì)列
p1=mp.Process(target=job,args=(q,100,200))
p2=mp.Process(target=job,args=(q,100,200))
p
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年幼兒教育專業(yè)資格考試題及答案
- 2025年自然科學(xué)基礎(chǔ)知識(shí)考試試卷及答案詳解
- 2025年水利工程師考試試題及答案
- 2025年保險(xiǎn)專業(yè)資格考試試題及答案
- 2025年大學(xué)英語四級(jí)試題及答案
- 房產(chǎn)養(yǎng)老收益評(píng)估與老年生活支持服務(wù)管理協(xié)議
- 軟件開發(fā)項(xiàng)目功能完善技術(shù)補(bǔ)充協(xié)議
- 技術(shù)培訓(xùn)與專業(yè)素質(zhì)提升補(bǔ)充合同
- 電商平臺(tái)用戶增長戰(zhàn)略規(guī)劃與實(shí)施協(xié)議
- 針對(duì)跨國企業(yè)物流風(fēng)險(xiǎn)的國際貨運(yùn)保險(xiǎn)責(zé)任合同
- 2025年水利工程師職稱考試試題及答案
- 2025年四川省成都市青羊區(qū)中考數(shù)學(xué)二診試卷
- 2025年四川省宜賓市第二中學(xué)校九年級(jí)二診考試數(shù)學(xué)試題(原卷版+解析版)
- 《會(huì)計(jì)基礎(chǔ)與實(shí)務(wù)》課件-項(xiàng)目五 登記會(huì)計(jì)賬簿
- 2024初級(jí)注冊(cè)安全工程師筆試題庫答案分析
- 高房子與矮房子的比較與思考
- 國潮插畫文創(chuàng)設(shè)計(jì)
- 2025中國臨床腫瘤學(xué)會(huì)CSCO非小細(xì)胞肺癌診療指南要點(diǎn)解讀課件
- 塑料粒子購銷合同協(xié)議
- 無線電測向小學(xué)生課件
- 2025年上半年安徽國風(fēng)新材料股份限公司招聘40人易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
評(píng)論
0/150
提交評(píng)論