Python并行编程之 Parallel Python文档页
Parallel Python文档页
原文: | http://www.parallelpython.com/content/view/15/30/ |
---|
1 PP 1.4.2 模块API
class
Server
class Server
并行Python SMP执行服务器类
方法定义:
__del__(self)
__init__(self,ncpus=’autodetect’,ppservers=(),secret=None,loglevel=30,logstream=<open file ‘<stderr>’,mode ‘w’>)
创建服务器实例
ncpus – 本机要启动的工作进程数量,如果省略则为处理器数量
ppservers – 可用的PP服务器
secret – 网络连接密码,省略则使用缺省密码,简易在所有连接中使用一个自定义密码
loglevel – logging模块的日志级别
logstream – 日志目标
使用ncpus=1则所有任务串行执行。要获取最好性能则使用’autodetect’值,或手动设置CPU数量。
get_ncpus(self)
获取工作进程数量
get_stats(self)
返回所有工作执行状态字典
print_stats(self)
打印工作执行状态,用于集群测试标准。
set_ncpus(self,ncpus=’autodetect’)
设置工作进程数量
ncpus – 工作进程数量,如果省略则设置为系统处理器数量
submit(self,func,args=(),depfuncs=(),modules=(),callback=None,callbackargs=(),group=’default’,globals=None)
提交函数到执行队列
func – 需要执行的函数
args – func函数的执行参数tuple
depfuncs – 待执行函数需要调用的函数tuple
modules – 需要被import导入的模块名字tuple
callback – 在函数执行完成之后的回调函数,参数为callbackargs+(result,)
callbackargs – 附加的回调函数参数
group – 工作组,用于当 wait(group) 被调用,等待工作组全部工作结束时
globals – 字典,所有模块和函数共享与导入的,例如 globals=globals()
wait(self,group=None)
等待工作组中所有工作结束,如果忽略group参数则等待所有工作结束
数据和其他属性:
default_port = 6000
default_secret = ‘epo20pdosl;dksldkmm’
Data
copyright = ‘Copyright (c) 2005-2007 Vitalii Vanovschi. All rights reserved’
version = ‘1.4.2’
2 快速开始,SMP
-
导入pp模块:
import pp
-
启动PP执行服务器,按照处理器数量指定工作进程数:
job_server=pp.Server()
-
提交需要进行并行计算的任务:
f1=job_server.submit(func1,args1,depfuncs1,modules1) f2=job_server.submit(func2,args2,depfuncs2,modules2) f3=job_server.submit(func3,args3,depfuncs3,modules3) # ...etc...
-
取回结果:
r1=f1() r2=f2() r3=f3() # ...etc...
查找如何使任务并行化,参考例子 例子
3 快速开始,集群
-
在各个计算节点上启动并行Python执行服务器:
node-1> ./ppserver.py node-2> ./ppserver.py node-3> ./ppserver.py
-
导入pp模块:
import pp
-
创建集群中计算节点列表(就是运行ppserver.py的机器):
ppservers=("node-1","node-2","node-3")
-
使用计算节点列表和其他参数来启动执行服务器:
job_server=pp.Server(ppservers=ppservers)
-
提交并行执行任务,同SMP的例子
-
取回结果,同SMP的例子
4 高级指南,集群
-
在各个计算节点上启动并行Python计算服务器,监听本地35000端口,仅接受密码正确的连接:
node-1> ./ppserver.py -p 35000 -i 192.168.0.101 -s "mysecret" node-2> ./ppserver.py -p 35000 -i 192.168.0.102 -s "mysecret" node-3> ./ppserver.py -p 35000 -i 192.168.0.103 -s "mysecret"
-
导入pp模块,同SMP例子
-
创建集群中计算节点列表,就是运行ppserver.py的机器:
ppservers=("node-1:35000","node-2:35000","node-3:35000")
-
启动pp执行服务器,同时指定集群列表和验证密码:
job_server=pp.Server(ppservers=ppservers,secret="mysecret")
-
提交并行计算任务,同SMP例子
-
取回结果,同SMP例子
-
显示执行状态:
job_server.print_stats()
5 命令行参数,ppserver.py
Usage: ppserver.py [-hd] [-i interface] [-p port] [-w nworkers] [-s secret] Options: -h : 显示这个帮助信息 -d : 调试 -i interface : 监听所用的网口 -p port : 监听端口 -w nworkers : 工作进程数量 -s secret : 认证密码