首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >朱莉娅:正确使用pmap

朱莉娅:正确使用pmap
EN

Stack Overflow用户
提问于 2014-07-08 16:31:37
回答 1查看 6.9K关注 0票数 6

为什么这不能做我认为应该做的事:

代码语言:javascript
复制
benjamin@benjamin-VirtualBox:~$ julia -p 3
julia> @everywhere(function foom(bar::Vector{Any}, k::Integer) println(repeat(bar[2],bar[1])); return bar; end)
julia> foo={{1,"a"},{2,"b"},{3,"c"}}
julia> pmap(foom, foo, 5)
    From worker 2:  a
1-element Array{Any,1}:
 {1,"a"}

这就是它的全部输出。我原以为pmap会在foo中遍历每个元组,并在上面调用foom。

编辑:

当我不传递其他参数时,它是正确的:

代码语言:javascript
复制
julia> @everywhere(function foom(bar::Vector{Any}) println(repeat(bar[2],bar[1])); return bar; end)

julia> pmap(foom, foo)
    From worker 3:  bb
    From worker 2:  a
    From worker 4:  ccc
3-element Array{Any,1}:
 {1,"a"}
 {2,"b"}
 {3,"c"}

如何将更多的参数传递给pmap?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-21 02:40:13

函数pmap确实接受任意数量的参数,每个参数都是一个集合。

代码语言:javascript
复制
function pmap(f, lsts...; err_retry=true, err_stop=false)

函数f将为每个集合发送一个参数。

示例多参数函数

代码语言:javascript
复制
julia> @everywhere f(s,count)=(println("process id = $(myid()) s = $s count = $count");repeat(s,count))

pmap使用1

代码语言:javascript
复制
julia> pmap((a1,a2)->f(a1,a2),{"a","b","c"},{2,1,3})
    From worker 3:  process id = 3 s = b count = 1
    From worker 2:  process id = 2 s = a count = 2
    From worker 4:  process id = 4 s = c count = 3
3-element Array{Any,1}:
 "aa" 
 "b"  
 "ccc"

pmap使用2

或者,可以将参数作为一个外部集合中的参数集合发送,该集合可以转换为目标函数的多个参数。

代码语言:javascript
复制
julia> pmap((args)->f(args...),{{"a",2},{"b",1},{"c",3}})
    From worker 2:  process id = 2 s = a count = 2
    From worker 3:  process id = 3 s = b count = 1
    From worker 4:  process id = 4 s = c count = 3
3-element Array{Any,1}:
 "aa" 
 "b"  
 "ccc"
票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24637064

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档