ParallelPytho是Pytho进行分布式计算的开源模块,能够将计算压力分布到多核CPU或集群的多台计算机上,能够非常方便的在内网中搭建一个自组织的分布式计算平台。先从多核计算开始,普通的Pytho应用程序只能够使用一个CPU进程,而通过ParallelPytho能够很方便的将计算扩展到多个CPU进程中
示例代码:
#!/usr/bi/pytho#File:sum_primes.py#Author:VItaliiVaovschi#Desc:Thisprogramdemostratesparallelcomputatioswithppmodule#Itcalculatesthesumofprimeumbersbelowagiveitegeriparallel#ParallelPythoSoftware:https://www.parallelpytho.comimportmath,sys,timeimportppdefisprime():"""RetursTrueifisprimeadFalseotherwise"""ifotisistace(,it):raiseTypeError("argumetpassedtois_primeisotof'it'type")if<2:returFalseif==2:returTruemax=it(math.ceil(math.sqrt()))i=2whilei<=max:if%i==0:returFalsei+=1returTruedefsum_primes():"""Calculatessumofallprimesbelowgiveiteger"""retursum([xforxixrage(2,)ifisprime(x)])prit"""Usage:pythosum_primes.py[cpus][cpus]-theumberofworkerstoruiparallel,ifomitteditwillbesettotheumberofprocessorsithesystem"""#tupleofallparallelpythoserverstocoectwithppservers=()#ppservers=("10.0.0.1",)ifle(sys.argv)>1:cpus=it(sys.argv[1])#Createsjobserverwithcpusworkersjob_server=pp.Server(cpus,ppservers=ppservers)else:#Createsjobserverwithautomaticallydetectedumberofworkersjob_server=pp.Server(ppservers=ppservers)prit"Startigppwith",job_server.get_cpus(),"workers"#Submitajobofcalulatigsum_primes(100)forexecutio.#sum_primes-thefuctio#(100,)-tuplewithargumetsforsum_primes#(isprime,)-tuplewithfuctiosowhichfuctiosum_primesdepeds#("math",)-tuplewithmoduleameswhichmustbeimportedbeforesum_primesexecutio#Executiostartsassooasoeoftheworkerswillbecomeavailablejob1=job_server.submit(sum_primes,(100,),(isprime,),("math",))#Retrievestheresultcalculatedbyjob1#Thevalueofjob1()isthesameassum_primes(100)#Ifthejobhasotbeefiishedyet,executiowillwaithereutilresultisavailableresult=job1()prit"Sumofprimesbelow100is",resultstart_time=time.time()#Thefollowigsubmits8jobsadtheretrievestheresultsiputs=(100000,100100,100200,100300,100400,100500,100600,100700)jobs=[(iput,job_server.submit(sum_primes,(iput,),(isprime,),("math",)))foriputiiputs]foriput,jobijobs:prit"Sumofprimesbelow",iput,"is",job()prit"Timeelapsed:",time.time()-start_time,"s"job_server.prit_stats()#ParallelPythoSoftware:https://www.parallelpytho.com






评论