當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。