用法:
class distributed.worker.Worker(scheduler_ip: str | None = None, scheduler_port: int | None = None, *, scheduler_file: str | None = None, nthreads: int | None = None, loop: IOLoop | None = None, local_dir: None = None, local_directory: str | None = None, services: dict | None = None, name: Any | None = None, reconnect: bool = True, memory_limit: str | float = 'auto', executor: Executor | dict[str, Executor] | Literal['offload'] | None = None, resources: dict[str, float] | None = None, silence_logs: int | None = None, death_timeout: Any | None = None, preload: list[str] | None = None, preload_argv: list[str] | list[list[str]] | None = None, security: Security | dict[str, Any] | None = None, contact_address: str | None = None, heartbeat_interval: Any = '1s', memory_monitor_interval: Any = '200ms', memory_target_fraction: float | Literal[False] | None = None, memory_spill_fraction: float | Literal[False] | None = None, memory_pause_fraction: float | Literal[False] | None = None, max_spill: float | str | Literal[False] | None = None, extensions: list[type] | None = None, metrics: Mapping[str, Callable[[Worker], Any]] = {}, startup_information: Mapping[str, Callable[[Worker], Any]] = {}, data: MutableMapping[str, Any] | Callable[[], MutableMapping[str, Any]] | tuple[Callable[..., MutableMapping[str, Any]], dict[str, Any]] | None = None, interface: str | None = None, host: str | None = None, port: int | None = None, protocol: str | None = None, dashboard_address: str | None = None, dashboard: bool = False, http_prefix: str = '/', nanny: Nanny | None = None, plugins: tuple[WorkerPlugin, ...] =(), low_level_profiler: bool | None = None, validate: bool | None = None, profile_cycle_interval=None, lifetime: Any | None = None, lifetime_stagger: Any | None = None, lifetime_restart: bool | None = None, **kwargs)
Dask 分布式集群中的工作節點
工人執行兩個函數:
提供來自本地字典的數據
對該數據和來自同行的數據執行計算
工作人員讓調度程序了解他們的數據,並在需要執行計算時使用該調度程序從其他工作人員那裏收集數據。
您可以使用
dask-worker
命令行應用程序啟動工作程序:$ dask-worker scheduler-ip:port
使用
--help
標誌查看更多選項:$ dask-worker --help
該文檔字符串的其餘部分是關於工作人員用於管理和跟蹤內部計算的內部狀態。
狀態
信息狀態
這些屬性在執行期間不會發生顯著變化。
- 線程:
int
: 此工作進程使用的 nthread 數
- 線程:
- 執行人:
dict[str, concurrent.futures.Executor]
: 執行器用於執行計算。始終包含默認執行程序。
- 執行人:
- local_directory:
path
: 本地機器上存儲臨時文件的路徑
- local_directory:
- 調度器:
rpc
: 調度程序的位置。請參閱
.ip/.port
屬性。
- 調度器:
- 姓名:
string
: 別名
- 姓名:
- 服務:
{str: Server}
: 在此工作器上運行的輔助 Web 服務器
- 服務:
- service_ports:
{str: port}
: - total_out_connections:
int
最大並發傳出數據請求數
- total_out_connections:
- total_in_connections:
int
最大並發傳入數據請求數
- total_in_connections:
- comm_threshold_bytes:
int
隻要傳輸中的總字節數低於此閾值,我們就不會限製單個任務依賴項獲取的傳出連接數。
- comm_threshold_bytes:
- batched_stream:
BatchedSend
我們與調度程序通信的批處理流
- batched_stream:
- 日誌:
[(message)]
結構化且可查詢的日誌。見
Worker.story
- 日誌:
易變狀態
這些屬性跟蹤該工作人員嘗試完成的任務的進度。在下麵的說明中,
key
是我們要計算的任務的名稱,dep
是我們要從其他人那裏收集的一段依賴數據的名稱。- 任務:
{key: TaskState}
當前在此工作人員上執行的任務(以及這些任務的任何依賴項)
- 任務:
- 數據:
{key: object}
: 優先使用主機屬性而不是這個,除非定義了memory_limit和memory_target_fraction或memory_spill_fraction值中的至少一個,在這種情況下,這個屬性是一個zict.Buffer,從中可以查詢關於LRU緩存的信息.
- 數據:
- 數據.內存:
{key: object}
: 字典映射鍵到存儲在內存中的實際值。僅當滿足數據為 zict.Buffer 的條件時才可用。
- 數據.內存:
- 數據磁盤:
{key: object}
: 字典映射鍵到存儲在磁盤上的實際值。僅當滿足數據為 zict.Buffer 的條件時才可用。
- 數據磁盤:
- data_needed: 唯一任務堆
仍然需要數據才能執行的任務,優先級為堆
- 準備好:[鍵]
準備好運行的鍵。存儲在 LIFO 堆棧中
- 受約束的:[鍵]
我們擁有要運行的數據但正在等待 GPU 等抽象資源的鍵。存儲在 FIFO 雙端隊列中
- executing_count:
int
當前在此工作人員上執行的任務計數
- executing_count:
- executed_count: 整數
該工作人員在其生命周期中運行的許多任務
- long_running: {鍵}
一組正在運行並已啟動自己的long-running 客戶端的任務鍵。
- has_what:
{worker: {deps}}
我們認為工人擁有的我們關心的數據
- has_what:
- pending_data_per_worker:
{worker: UniqueTaskHeap}
我們仍然想要的每個工人的數據,優先作為一個堆
- pending_data_per_worker:
- in_flight_tasks:
int
當前peer-to-peer連接中的任務數
- in_flight_tasks:
- in_flight_workers:
{worker: {task}}
我們目前從中收集數據的工作人員以及我們期望從這些連接中獲得的依賴關係
- in_flight_workers:
- comm_bytes:
int
飛行中的總字節數
- comm_bytes:
- 線程:
{key: int}
運行任務的線程的 ID
- 線程:
- active_threads:
{int: key}
當前在活動線程上運行的鍵
- active_threads:
- waiting_for_data_count:
int
當前正在等待數據的任務數量的計數
- waiting_for_data_count:
- 一代:
int
每次調度程序調用 compute-task 處理程序時計數器都會減少。它附加到 TaskState.priority 並充當調度程序上具有相同優先級的任務之間的tie-breaker,確定它們之間的後進先出順序。
- 一代:
- scheduler_ip: str, optional:
- scheduler_port: int, optional:
- scheduler_file: str, optional:
- ip: str, optional:
- data: MutableMapping, type, None:
用於存儲的對象,默認構建一個disk-backed LRU dict
- nthreads: int, optional:
- loop: tornado.ioloop.IOLoop:
- local_directory: str, optional:
我們放置本地資源的目錄
- name: str, optional:
- memory_limit: int, float, string:
此工作程序應使用的內存字節數。設置為零無限製。設置為 ‘auto’ 以作為係統計算。MEMORY_LIMIT * min(1, nthreads /total_cores) 使用字符串或數字,如 5GB 或 5e9
- memory_target_fraction: float or False:
試圖保持在下麵的內存部分(默認值:從配置鍵 Distributed.worker.memory.target 讀取)
- memory_spill_fraction: float or false:
我們開始溢出到磁盤的內存部分(默認值:從配置鍵 Distributed.worker.memory.spill 讀取)
- memory_pause_fraction: float or False:
我們停止運行新任務的內存部分(默認值:從配置鍵 Distributed.worker.memory.pause 讀取)
- max_spill: int, string or False:
要溢出到磁盤上的字節數限製。 (默認:從配置鍵中讀取分布式.worker.memory.max-spill)
- executor: concurrent.futures.Executor, dict[str, concurrent.futures.Executor], “offload”:
- 要使用的執行者。根據類型,它具有以下含義:
- 執行器實例:默認執行器。
- Dict[str, Executor]:將名稱映射到 Executor 實例。如果 “default” 鍵不在字典中,將使用
ThreadPoolExecutor(nthreads)
創建 “default” 執行程序。 - Str:字符串“offload”,指的是用於卸載通信的同一線程池。這導致同一個線程被用於反序列化和計算。
- resources: dict:
該工作人員擁有的資源如
{'GPU': 2}
- nanny: str:
聯係保姆的地址(如果有)
- lifetime: str:
像“1 小時”這樣的時間量,之後我們優雅地關閉了 worker。這默認為無,這意味著沒有明確的關閉時間。
- lifetime_stagger: str:
像“5分鍾”這樣的時間來錯開生命周期值實際生命周期將在生命周期+/-之間隨機均勻選擇lifetime_stagger
- lifetime_restart: bool:
是否在工作人員達到其生命周期後重新啟動它 默認 False
- kwargs: optional:
ServerNode 構造函數的附加參數
參數:
例子:
使用命令行啟動一個worker:
$ dask-scheduler Start scheduler at 127.0.0.1:8786 $ dask-worker 127.0.0.1:8786 Start worker at: 127.0.0.1:1234 Registered with scheduler at: 127.0.0.1:8786
相關用法
- Python distributed.worker_client用法及代碼示例
- Python distributed.protocol.serialize.register_generic用法及代碼示例
- Python distributed.Client.gather用法及代碼示例
- Python distributed.recreate_tasks.ReplayTaskClient.recreate_task_locally用法及代碼示例
- Python distributed.diagnostics.plugin.SchedulerPlugin用法及代碼示例
- Python distributed.Client.ncores用法及代碼示例
- Python distributed.Client.retire_workers用法及代碼示例
- Python distributed.Client.unregister_worker_plugin用法及代碼示例
- Python distributed.fire_and_forget用法及代碼示例
- Python distributed.Client.set_metadata用法及代碼示例
- Python distributed.Client.scheduler_info用法及代碼示例
- Python distributed.Client.submit用法及代碼示例
- Python distributed.Client.compute用法及代碼示例
- Python distributed.SpecCluster.scale用法及代碼示例
- Python distributed.get_worker用法及代碼示例
- Python distributed.SpecCluster.scale_up用法及代碼示例
- Python distributed.Client.nthreads用法及代碼示例
- Python distributed.comm.resolve_address用法及代碼示例
- Python distributed.Client.unpublish_dataset用法及代碼示例
- Python distributed.get_task_stream用法及代碼示例
注:本文由純淨天空篩選整理自dask.org大神的英文原創作品 distributed.worker.Worker。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。