当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python distributed.Client.scatter用法及代码示例


用法:

scatter(data, workers=None, broadcast=False, direct=None, hash=True, timeout='__no_default__', asynchronous=None)

将数据分散到分布式内存中

这会将数据从本地客户端进程移动到分布式调度程序的工作人员中。请注意,通常最好将作业提交给您的工作人员以让他们加载数据,而不是在本地加载数据然后将其分散给他们。

参数

data列表、字典或对象

分发给工人的数据。输出类型匹配输入类型。

workers元组列表(可选)

可选地限制数据的位置。将工作人员指定为主机名/端口对,例如('127.0.0.1', 8787)

broadcast布尔型(默认为 False)

是否将每个数据元素发送给所有工作人员。默认情况下,我们 round-robin 基于内核数。

directbool(默认自动检查)

是否直接连接到worker,或者要求调度器充当中介。这也可以在创建客户端时设置。

hash布尔(可选)

是否对数据进行散列以确定 key 。如果 False 则使用随机 key

timeout编号,可选

引发 dask.distributed.TimeoutError 的时间(以秒为单位)

asynchronous: bool

如果为 True,则客户端处于异步模式

返回

与输入类型匹配的期货列表、字典、迭代器或队列。

例子

>>> c = Client('127.0.0.1:8787')  
>>> c.scatter(1) 
<Future: status: finished, key: c0a8a20f903a4915b94db8de3ea63195>
>>> c.scatter([1, 2, 3])  
[<Future: status: finished, key: c0a8a20f903a4915b94db8de3ea63195>,
 <Future: status: finished, key: 58e78e1b34eb49a68c65b54815d1b158>,
 <Future: status: finished, key: d3395e15f605bc35ab1bac6341a285e2>]
>>> c.scatter({'x': 1, 'y': 2, 'z': 3})  
{'x': <Future: status: finished, key: x>,
 'y': <Future: status: finished, key: y>,
 'z': <Future: status: finished, key: z>}

将数据的位置限制为工作人员的子集

>>> c.scatter([1, 2, 3], workers=[('hostname', 8788)])

向所有工作人员广播数据

>>> [future] = c.scatter([element], broadcast=True)

使用客户端期货接口将分散的数据发送到并行函数

>>> data = c.scatter(data, broadcast=True)  
>>> res = [c.submit(func, data, i) for i in range(100)]

相关用法


注:本文由纯净天空筛选整理自dask.org大神的英文原创作品 distributed.Client.scatter。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。