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


Python distributed.worker.Worker用法及代碼示例


用法:

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 分布式集群中的工作節點

工人執行兩個函數:

  1. 提供來自本地字典的數據

  2. 對該數據和來自同行的數據執行計算

工作人員讓調度程序了解他們的數據,並在需要執行計算時使用該調度程序從其他工作人員那裏收集數據。

您可以使用 dask-worker 命令行應用程序啟動工作程序:

$ dask-worker scheduler-ip:port

使用 --help 標誌查看更多選項:

$ dask-worker --help

該文檔字符串的其餘部分是關於工作人員用於管理和跟蹤內部計算的內部狀態。

狀態

信息狀態

這些屬性在執行期間不會發生顯著變化。

  • 線程: int

    此工作進程使用的 nthread 數

  • 執行人: dict[str, concurrent.futures.Executor]

    執行器用於執行計算。始終包含默認執行程序。

  • local_directory: path

    本地機器上存儲臨時文件的路徑

  • 調度器: rpc

    調度程序的位置。請參閱.ip/.port 屬性。

  • 姓名: string

    別名

  • 服務: {str: Server}

    在此工作器上運行的輔助 Web 服務器

  • service_ports: {str: port}
  • total_out_connectionsint

    最大並發傳出數據請求數

  • total_in_connectionsint

    最大並發傳入數據請求數

  • comm_threshold_bytesint

    隻要傳輸中的總字節數低於此閾值,我們就不會限製單個任務依賴項獲取的傳出連接數。

  • batched_streamBatchedSend

    我們與調度程序通信的批處理流

  • 日誌[(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_countint

    當前在此工作人員上執行的任務計數

  • executed_count: 整數

    該工作人員在其生命周期中運行的許多任務

  • long_running: {鍵}

    一組正在運行並已啟動自己的long-running 客戶端的任務鍵。

  • has_what{worker: {deps}}

    我們認為工人擁有的我們關心的數據

  • pending_data_per_worker{worker: UniqueTaskHeap}

    我們仍然想要的每個工人的數據,優先作為一個堆

  • in_flight_tasksint

    當前peer-to-peer連接中的任務數

  • in_flight_workers{worker: {task}}

    我們目前從中收集數據的工作人員以及我們期望從這些連接中獲得的依賴關係

  • comm_bytesint

    飛行中的總字節數

  • 線程{key: int}

    運行任務的線程的 ID

  • active_threads{int: key}

    當前在活動線程上運行的鍵

  • waiting_for_data_countint

    當前正在等待數據的任務數量的計數

  • 一代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

相關用法


注:本文由純淨天空篩選整理自dask.org大神的英文原創作品 distributed.worker.Worker。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。