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


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


用法:

register_worker_plugin(plugin=None, name=None, nanny=None, **kwargs)

为所有当前和未来的工作人员注册一个生命周期工作人员插件。

这会注册一个新对象来处理此集群中工作人员的设置、任务状态转换和拆卸。该插件将在所有当前连接的工作人员上实例化自己。它也将在未来连接的任何工作人员上运行。

该插件可能包括方法 setup , teardown , transitionrelease_key 。有关接口和文档字符串,请参阅dask.distributed.WorkerPlugin 类或下面的示例。它必须可以使用 pickle 或 cloudpickle 模块进行序列化。

如果插件有 name 属性,或者如果使用了 name= 关键字,那么这将控制幂等性。如果具有该名称的插件已经注册,那么它将被删除并替换为新插件。

对于插件的替代品,您可能还希望查看预加载脚本。

参数

pluginWorkerPlugin 或 NannyPlugin

要注册的 WorkerPlugin 或 NannyPlugin 实例。

namestr,可选

插件的名称。注册同名插件将无效。如果插件没有名称属性,则使用随机名称。

nanny布尔型,可选

是否向工人或保姆注册插件。

**kwargs可选的

已弃用;如果您将类作为插件传递,而不是类实例,则该类将使用任何额外的关键字参数进行实例化。

例子

>>> class MyPlugin(WorkerPlugin):
...     def __init__(self, *args, **kwargs):
...         pass  # the constructor is up to you
...     def setup(self, worker: dask.distributed.Worker):
...         pass
...     def teardown(self, worker: dask.distributed.Worker):
...         pass
...     def transition(self, key: str, start: str, finish: str,
...                    **kwargs):
...         pass
...     def release_key(self, key: str, state: str, cause: str | None, reason: None, report: bool):
...         pass
>>> plugin = MyPlugin(1, 2, 3)
>>> client.register_worker_plugin(plugin)

您可以使用 get_worker 函数访问插件

>>> client.register_worker_plugin(other_plugin, name='my-plugin')
>>> def f():
...    worker = get_worker()
...    plugin = worker.plugins['my-plugin']
...    return plugin.my_state
>>> future = client.run(f)

相关用法


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