找回密码
 注册
查看: 829|回复: 0

R语言 rzmq包 zmq.lapply()函数中文帮助文档(中英文对照)

[复制链接]
发表于 2012-9-29 21:14:16 | 显示全部楼层 |阅读模式
zmq.lapply(rzmq)
zmq.lapply()所属R语言包:rzmq

                                         apply a function to a list.
                                         应用到一个列表中的一个函数。

                                         译者:生物统计家园网 机器人LoveR

描述----------Description----------

zmq.lapply returns a list of the same length as X, each element of which is the result of applying FUN to the corresponding element of X.
zmq.lapply返回一个列表的长度相同X,其中每个元素的是施加FUNX中的对应元素的结果。

The execution of the function is performed in parallel over zmq sockets.
超过ZMQ套接字函数的执行并行地进行。


用法----------Usage----------


zmq.cluster.lapply(cluster,X,FUN,...,deathstar.port=6000,control.port=6001)




参数----------Arguments----------

参数:cluster
a vector of computer names to use for the parallel lapply
一个向量的计算机名,使用的平行lapply


参数:X
a list or vector.
列表或矢量。


参数:FUN
the function to be applied to each element of X
的功能被应用到每个元素X


参数:deathstar.port
the port to use to send jobs/receive results.
要使用的端口,将作业发送/接收结果。


参数:control.port
the port to use to check whether the cluster memeber is ready to receive jobs.
要使用的端口,以检查是否在聚类星期四会员是准备好接收作业。


参数:...
additional arguments to lapply.
其他参数lapply。


Details

详细信息----------Details----------

Successful "parallelization" of lapply requires a broker device to run on the remote server to fanout the jobs to multiple machines.
成功的“并行”的lapply需要一个代理设备运行远程服务器上的扇出到多台机器的工作。

The example below assumes a remote execution server is running on one machine, hence the job will not run in parallel.
下面的例子假定一个远程执行服务器运行在一台机器上,因此作业将不会运行在平行。

See the ZMQ ventilator example for more details (http://zguide.zeromq.org/page:all#Divide-and-Conquer).
有关详细信息,请参阅ZMQ呼吸机例如(http://zguide.zeromq.org/page:all分而治)。


值----------Value----------

a list of the same length as X
相同的长度为X的列表的


(作者)----------Author(s)----------



ZMQ was written by Martin Sustrik <sustrik@250bpm.com> and Martin Lucina <mato@kotelna.sk>.
rzmq was written by Whit Armstrong.
segue and estimatePi were written by JD Long.




参考文献----------References----------

http://www.zeromq.org http://api.zeromq.org http://zguide.zeromq.org/page:all http://zguide.zeromq.org/page:all#Divide-and-Conquer https://gist.github.com/406824 http://www.vcasmo.com/video/drewconway/8468 http://www.r-bloggers.com/abusing-amazon http://code.google.com/p/segue

参见----------See Also----------

connect.socket,bind.socket,receive.socket,send.socket
connect.socket,bind.socket,receive.socket,send.socket


实例----------Examples----------


library(rzmq)

## run on remote machine:[#远程计算机上运行:]
#!/usr/bin/env Rscript[!/ usr / bin中/ ENV Rscript的]

library(rzmq)
library(getopt)

worker.id <- paste(Sys.info()["nodename"],Sys.getpid(),sep=":")

spec <- rbind(c('control','c', 1, "character"),
              c('in','i', 1, "character"),
              c('out','o', 1, "character"),
              c('log-file','l', 1, "character"))

opts <- getopt(spec)
control.endpoint <- opts[["control"]]
in.endpoint <- opts[["in"]]
out.endpoint <- opts[["out"]]
log.file <- opts[["log-file"]]

sink(log.file)
print(opts)

context = init.context()

in.socket = init.socket(context,"ZMQ_PULL")
connect.socket(in.socket,in.endpoint)

out.socket = init.socket(context,"ZMQ_PUSH")
connect.socket(out.socket,out.endpoint)

## send control message to indicate worker is up[发送控制消息,表明工人是]
control.socket = init.socket(context,"ZMQ_PUSH")
connect.socket(control.socket,control.endpoint)
send.null.msg(control.socket)

while(1) {
    msg = receive.socket(in.socket);
    index <- msg$index
    fun <- msg$fun
    args <- msg$args
    print(args)
    result <- try(do.call(fun,args),silent=TRUE)
    send.socket(out.socket,list(index=index,result=result,node=worker.id));
}

## run locally[#在本地运行]
## estimatePi example courtesy of JD Long / Jeffrey Breen[#estimatePi例如由JD长/杰弗里·布林]

library(AWS.tools)
library(rzmq)

cl <- startCluster(ami="ami-4bc90522",key="kls-ec2",instance.count=5,instance.type="c1.xlarge")

estimatePi <- function(seed) {
    set.seed(seed)
    numDraws <- 1e6

    r <- .5
    x <- runif(numDraws, min=-r, max=r)
    y <- runif(numDraws, min=-r, max=r)
    inCircle <- ifelse( (x^2 + y^2)^.5 < r , 1, 0)
   
    sum(inCircle) / length(inCircle) * 4
}

run.time <- system.time(ans <- zmq.cluster.lapply(cluster=cl$instances[,"PublicDNS"],as.list(1:1000),estimatePi))

print(mean(unlist(ans)))
print(run.time)
print(attr(ans,"execution.report"))

res <- terminateCluster(cl)

pi.est <- mean(unlist(ans))
print(pi.est)



转载请注明:出自 生物统计家园网(http://www.biostatistic.net)。


注:
注1:为了方便大家学习,本文档为生物统计家园网机器人LoveR翻译而成,仅供个人R语言学习参考使用,生物统计家园保留版权。
注2:由于是机器人自动翻译,难免有不准确之处,使用时仔细对照中、英文内容进行反复理解,可以帮助R语言的学习。
注3:如遇到不准确之处,请在本贴的后面进行回帖,我们会逐渐进行修订。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|小黑屋|生物统计家园 网站价格

GMT+8, 2024-11-28 22:41 , Processed in 0.038351 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表