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 ...
随机推荐
- 3ds Max Shortcuts 快捷键大全
主界面 [Q]选择循环改变方式 [W]移动 [E]旋转 [R]缩放循环改变方式 [7]物体面数 [8]Environment [9]Advanced lighting [0]Render to Tex ...
- [转载]对于GetBuffer() 与 ReleaseBuffer() 的一些分析
先 转载一段别人的文章 CString类的这几个函数, 一直在用, 但总感觉理解的不够透彻, 不时还有用错的现象. 今天抽时间和Nico一起分析了一下, 算是拨开了云雾: GetBuffer和Rele ...
- 汇编基础知识之二debug的使用
DEBUG的使用 (要在win32位习题下进行,win7 64位需要安装DosBox和debug这2个软件): 1:win64位下debug的使用教程: 下载debug.exe,这里我把debug放在 ...
- Python 基础 - 对文本的处理
Python 对文本文件的处理. 对文本操作之前,必须要先open 这个文件,open完成之后需要close . # -*- coding: utf-8 -*- f=open('test.txt',' ...
- vs2013如何在C++中调用Lua(二)
Lua学习笔记 vs2013如何在C++中调用Lua (此为转载教程) 本人试过完全可行 一.准备工作 1.下载Lua源码,地址:http://www.lua.org/download.html(我用 ...
- 使用方法:mail_sendmail($params)
使用方法:mail_sendmail($params) 类构造函数,$params是一个关联数组,你可以设定sendmail的参数,目前只有sendmail_path是有效的,用来设置sendmail ...
- EDI - Biztalk Setting
1. Applications:
- 【iCore3 双核心板】iCore3封装库及使用说明V1.0
iCore3封装库及使用说明下载链接: http://pan.baidu.com/s/1pLq23Qb iCore3 购买链接: https://item.taobao.com/item.htm?id ...
- C++和C代码互相调用是不可避免的
C++ 编译器能够兼容C语言发编译方式 C++编译器会优先使用C++ 编译的方式 extern 关键字能强制让C++编译器进行C方式的编译 external “C” { //do C-style co ...
- chmod() has been disabled for security reasons
最近用 codeigniter 写一个小系统,引用了session 库,codeigniter默认的session存储方式为files.鉴于安全性,文件即肯定涉及到权限问题. 在类 UNIX 操作系统 ...