PythonPP+lambda:示例
直接上代码。 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()
PythonPP+lambda:示例的更多相关文章
- 掌握 Java 8 Lambda 表达式
Lambda 表达式 是 Java8 中最重要的功能之一.使用 Lambda 表达式 可以替代只有一个函数的接口实现,告别匿名内部类,代码看起来更简洁易懂.Lambda 表达式 同时还提升了对 集合 ...
- java8学习笔记之lambda表达式
1.lambda表达式特点 lambda表达式可以理解为可传递的匿名函数的一种方式,无名称,但有参数列表和函数体以及返回类型,可能还有一个可抛出异常的列表. 2.lambda表达式基本语法 (para ...
- Java 终于有 Lambda 表达式啦~Java 8 语言变化——Lambda 表达式和接口类更改【转载】
原文地址 en cn 下载 Demo Java™ 8 包含一些重要的新的语言功能,为您提供了构建程序的更简单方式.Lambda 表达式 为内联代码块定义一种新语法,其灵活性与匿名内部类一样,但样板文件 ...
- 【C#】委托中的匿名函数与lambda
将方法作为方法的参数 委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时使 ...
- Java8的Lambda表达式简介
先阐述一下JSR(Java Specification Requests)规范,即Java语言的规范提案.是向JCP(Java Community Process)提出新增一个标准化技术规范的正式请求 ...
- Java8之熟透Lambda表达式
一.Lambda简述 1.1.Lambda概述 Lambda 表达式可以理解为简洁地表示可传递的匿名函数的一种方式:它没有名称,但它有参数列表.函数主体.返回类型,可能还有一个可以抛出的异常列表. ...
- Java 8 Lambda表达式学习和理解
Java 8 Lambda表达式和理解 说明:部分资料来源于网络 时间:20190704 Lambda 表达式,也可称为闭包,它是推动 Java 8 发布的最重要新特性.Lambda 允许把函数作为一 ...
- Java 基础篇之lambda
Lambda 示例 public interface Eatable { void taste(); } public interface Flyable { void fly(String weat ...
- java8学习之Lambda表达式继续探讨&Function接口详解
对于上次[http://www.cnblogs.com/webor2006/p/8186039.html]已经初步引入的Java8中Stream流的概念,其中使用了map的操作,它需要接受一个Func ...
随机推荐
- Maya 建模完成后的整理
我们在使用Maya建模完成后可能会进行发布,为了自己或他人的方便使用,我们需要对建立好的模型进行些处理: 1. 删除历史记录:选择模型,Edit -> Delete by Type -> ...
- Sqoop_ 从 hive 导到mysql常遇九问题总结(转)
以前以为版本不同,遇到的问题就不同,后来发现,无论是新版本,还是老版本,遇到的问题大部分都是相同的.下面解决问题的方法仅供借鉴 1.拒绝连接的错误表现是什么?2.表不存在该如何解决?3.null字段填 ...
- Hadoop.2.x_伪分布环境搭建
一. 基本环境搭建 1. 设置主机名.静态IP/DNS.主机映射.windows主机映射(方便ssh访问与IP修改)等 设置主机名: vi /etc/sysconfig/network # 重启系统生 ...
- mysql主从复制过滤
主从复制过滤: 配置文件中的[mysqld]块中: master:(考虑到即时点还原一般不在主过滤) binlog_do_db= #数据库白名单 binlog_ignore_db= #数据库白名单 s ...
- Web前端代码页面布局总结
一. html (1)编码:所有编码均采用xhtml,标签必须闭合,属性值用双引号包括,编码统一为utf-8. (2)语义化:语义化html,正确使用标签. (3)文件命名:命名以中文命名,依实际模 ...
- 安装好php后,配置httpd以便支持php3脚本
Apache是目前应用最广的Web服务器,PHP是一种类似ASP的易学的脚本语言,而且性能和功能都比ASP要强,而MySQL又是一个Linux上应用最多的数据库系统,特别是用于网站建设,这3个软件均是 ...
- 使用花生壳6.5客户端FTP设置
1.打开FTP客户端—选项—参数选择 2.设置为主动模式(PORT) 3.连接FTP服务器 4.FTP连接成功
- Android课程---进度条及菜单的学习
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...
- P4实验问题 解决python模块导入
参考:Python导入自定义包或模块 在执行./run_demo.sh的过程中,遇到了python的模块问题: root@ubuntu:/home/wasdns/tutorials/SIGCOMM_2 ...
- 使用 JavaScript 实现栈
1.栈的基本操作 function Stack() { //使用数组保存栈元素 var items = []; //添加新元素到栈顶(相当于数组的末尾) this.push = function(el ...