【问题标题】:passing different arguments for ipython parallel clients为 ipython 并行客户端传递不同的参数
【发布时间】:2023-04-06 10:45:01
【问题描述】:

我正在学习 ipython 中的并行计算。我遇到了一个例子,

from ipyparallel import Client

rc = Client()
rc.block = True
print(rc.ids)

def mul(a,b):
    return a*b

dview = rc[:]
print(dview.apply(mul, 5, 6))
print(rc[0].apply(mul, 5, 5))
print(rc[1].apply(mul, 5, 9))

在上面的代码中,当dview.apply 被调用时,它会为所有客户端传递相同的参数集。我学会了分别给每个客户打电话。但是,如果客户要执行数据密集型任务,有没有办法通过dview.apply 传递不同的参数,因为那是进行并行计算的重点。

如果没有其他办法,我们是否可以让每个客户端调用异步,这样任务将并行完成,而不是在调用单个客户端时等待第一个客户端的结果?。

【问题讨论】:

    标签: ipython jupyter-notebook ipython-parallel


    【解决方案1】:

    通常,并行计算可以表示为映射,您可以在其中传递参数序列:

    dview = rc[:]
    inputs = [6, 5, 9]
    results = dview.map(mul, [5] * len(inputs), inputs)
    

    我们可以让每个客户端调用异步

    是的,你可以使用view.apply_async返回一个与结果对应的Future:

    ar = view.apply_async(mul, 5, 6)
    result = ar.get()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-16
      • 1970-01-01
      • 2011-07-20
      • 2020-07-10
      • 1970-01-01
      • 2023-03-29
      • 2011-10-14
      • 1970-01-01
      相关资源
      最近更新 更多