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

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

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

 

import pp
from multiprocessing import Process, Pool, Pipe def addNFunc(n):
return lambda x:x+n def fac(n):
if n <= 1:
return 1
return reduce(lambda x,y: x*y, map(addNFunc(1), range(n))) def computingFacOfRange(begin, end):
for i in map(addNFunc(begin), range(end-begin+1)):
print i, '! =', fac(i) def another():
print 'another quick job' def QuadraticSum(n, m):
''' compute 1^m + 2^m + ... + n^m '''
if n <= 1:
return 1
return reduce(lambda x,y: x+y**m, map(addNFunc(1), range(n))) def expressQS(n,m):
if n <= 1:
return ''
return reduce(lambda x,y: "%s+%s" %(str(x),str(y)+'^'+str(m)), map(addNFunc(1), range(n))) def obtainQuadraticSum(n, m):
return "%s=%s" % (expressQS(n, m), QuadraticSum(n,m)) def obtainQuadraticSumByPipe(conn, n, m):
conn.send(obtainQuadraticSum(n, m)) def printQuadraticSum(n, m):
print obtainQuadraticSum(n, m) def testQuadraticSum():
for n in [1,2,3,4,5]:
for m in [-1,1,2,3]:
printQuadraticSum(n, m) def usingPP():
''' using pp module for python concurrent programming '''
nworkers = 10
ppservers = ()
job_server = pp.Server(nworkers, ppservers=ppservers) print "Starting pp with", job_server.get_ncpus(), "workers" jobs = []
for i in range(nworkers):
jobs.append(job_server.submit(computingFacOfRange, (i*10+1, (i+1)*10), (fac,addNFunc,))) jobs.append(job_server.submit(another, ())) for job in jobs:
job() job_server.print_stats() def usingMultiprocess():
''' using multiprocessing module for python concurrent programming '''
num = 100
processes = [] print '************ using original process ***********'
input_conn, output_conn = Pipe()
for m in [-1,1,2,3]:
p = Process(target=obtainQuadraticSumByPipe, args=(input_conn, num,m,))
p.start()
print output_conn.recv() print '------------- using Pool -------------'
pool = Pool(processes=4)
for m in [-1,1,2,3]:
pool.apply(printQuadraticSum, (num,m)) if __name__ == '__main__':
testQuadraticSum()
usingPP()
usingMultiprocess()

最新文章

  1. org.dom4j.DocumentException : 1 字节的 UTF-8 序列的字节 1 无效。 Nested exception: 1 字节的 UTF-8 序列的字节 1 无效。
  2. python 日志收集系统
  3. Android内存性能优化(内部资料总结)
  4. PHP面向对象(OOP):抽象方法和抽象类(abstract)
  5. POJ-1003&amp;1004
  6. Python求解数组重新组合求最小值(优酷)
  7. Cloud9vue&amp;vux上传github小步骤
  8. android的Findbugs问题整理
  9. 安装 python pip Django
  10. HBASE SHELL 命令使用
  11. week08 S8-01 docker images tensorflow-jupyter
  12. (1)selenium-java环境搭建
  13. php钩子原理和实现
  14. linq的基本使用
  15. Spark 性能调优-内存设置-GC设置
  16. Java NIO系列教程(十)DatagramChannel
  17. python安装mysql
  18. 使用FileZilla向linux系统上传文件
  19. 亿级别记录的mongodb分页查询java代码实现
  20. NOIP 2011 Day 1

热门文章

  1. find a multiple
  2. xml、文件操作功能类
  3. EDI - Biztalk Setting
  4. 安卓模拟器研究-root
  5. java swing 中的FileDialog
  6. .htaccess 重写去index.php
  7. Flink - Checkpoint
  8. centos7下更改java环境
  9. js中eval() 方法的使用以及一些特殊的使用方式
  10. 《Linux内核分析》第七周 可执行程序的装载