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 ...
随机推荐
- Android studio使用增量更新进行版本升级
今天将Android Studio更新了一下,特此记录一下升级过程,以后可能还会用得着. 首先通过菜单栏进入 Help --> Check for update 查看下当前版本是否需要更新.事实 ...
- 1021上课演练----SQL注入与避免(银行系统)
package com.bank; import java.sql.CallableStatement; import java.sql.Connection; import java.sql.Dat ...
- 给ListView视图添加行号
最后的效果如下: 更新,集成一个独立的模块而不改变源文件的方式更为稳妥. 购买地址:https://item.taobao.com/item.htm?spm=a1z10.3-c.w4002-26531 ...
- html图片和文字的细节
ul中的每一个li如果里面添加“一个图,一行字”, 这样图片会紧贴在左侧,而文字会居中,这两个元素不会紧贴着. 产生这种问题的原因我推测是:我图片设置了左浮动,但文字没有设置浮动,而一旦将文字设置为浮 ...
- string用法
截取字符串 string strTributeInfo = "1#2#3#4#5#6#7"; vector<string> vecTribute; StringUtil ...
- Struts2基础学习总结
引用自:http://www.cnblogs.com/jbelial/archive/2012/05/10/2486886.html Struts 2是在WebWork2基础发展而来的. 注意:str ...
- Maven Profile
profile可以让我们定义一系列的配置信息,然后指定其激活条件.这样我们就可以定义多个profile,然后每个profile对应不同的激活条件和配置信息,从而达到不同环境使用不同配置信息的效果. p ...
- [转]JNIEnv解析
1.关于JNIEnv和JavaVM JNIEnv是一个与线程相关的变量,不同线程的JNIEnv彼此独立.JavaVM是虚拟机在JNI层的代表,在一个虚拟机进程中只有一个JavaVM,因此该进程的所有线 ...
- CentOS下搭建nginx+php环境
一.下载安装nginx 参见 http://www.cnblogs.com/kreo/p/4378086.html 不再赘述 二.下载php #下载 wget http://bg2.php.net/d ...
- 解决ssh登录后闲置时间过长而断开连接
++++++++++++++++++++++++++++ #!/usr/bin/env bash password_5="Uxxx7"host_5="129.x.x.1 ...