PythonPP+lambda:示例

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

直接上代码。 python PP 下载, 可以到官网下载 Python PP 下载

lambda 能做的, 基本上普通函数都可以做到。 lambda 的主要作用是简化表达式, 并且似乎尤其适合于表达科学计算公式。 结合 map, reduce 等函数,可以获得更强大而“优雅”的表达能力。 这里的“优雅”并不一定表示易理解性,而常常是因为一句短小精炼的代码使得人眼前一亮。

以下代码演示 lambda 的用法及 python 并发编程。

importppfrommultiprocessingimportPRocess, Pool, PipedefaddNFunc(n):returnlambdax:x+ndeffac(n):ifn <= 1:return1returnreduce(lambdax,y: x*y, map(addNFunc(1), range(n)))defcomputingFacOfRange(begin, end):foriinmap(addNFunc(begin), range(end-begin+1)):printi,'! =', fac(i)defanother():print'another quick job'defQuadraticSum(n, m):'''compute 1^m + 2^m + ... + n^m'''ifn <= 1:return1returnreduce(lambdax,y: x+y**m, map(addNFunc(1), range(n)))defexpressQS(n,m):ifn <= 1:return'1'returnreduce(lambdax,y:"%s+%s"%(str(x),str(y)+'^'+str(m)), map(addNFunc(1), range(n)))defobtainQuadraticSum(n, m):return"%s=%s"%(expressQS(n, m), QuadraticSum(n,m))defobtainQuadraticSumByPipe(conn, n, m):

conn.send(obtainQuadraticSum(n, m))defprintQuadraticSum(n, m):printobtainQuadraticSum(n, m)deftestQuadraticSum():fornin[1,2,3,4,5]:formin[-1,1,2,3]:

printQuadraticSum(n, m)defusingPP():'''using pp module for python concurrent programming'''nworkers= 10ppservers=()

job_server= pp.Server(nworkers, ppservers=ppservers)print"Starting pp with", job_server.get_ncpus(),"workers"jobs=[]foriinrange(nworkers):

jobs.append(job_server.submit(computingFacOfRange, (i*10+1, (i+1)*10), (fac,addNFunc,)))

jobs.append(job_server.submit(another, ()))forjobinjobs:

job()

job_server.print_stats()defusingMultiprocess():'''using multiprocessing module for python concurrent programming'''num= 100processes=[]print'************ using original process ***********'input_conn, output_conn=Pipe()formin[-1,1,2,3]:

p= Process(target=obtainQuadraticSumByPipe, args=(input_conn, num,m,))

p.start()printoutput_conn.recv()print'------------- using Pool -------------'pool= Pool(processes=4)formin[-1,1,2,3]:

pool.apply(printQuadraticSum, (num,m))if__name__=='__main__':

testQuadraticSum()

usingPP()

usingMultiprocess()

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航