gpt4 book ai didi

python - 如何在 dask/distributed 中存储 worker-local 变量

转载 作者:太空狗 更新时间:2023-10-29 23:57:17 26 4
gpt4 key购买 nike

使用 dask 0.15.0,分布式 1.17.1。

我想为每个工作人员记住一些东西,比如访问谷歌云存储的客户端,因为实例化它很昂贵。我宁愿将其存储在某种 worker 属性中。这样做的规范方法是什么?或者是全局变量?

最佳答案

关于 worker

您可以使用 get_worker 访问本地工作人员功能。比全局更简洁的事情是将状态附加到工作人员:

from dask.distributed import get_worker

def my_function(...):
worker = get_worker()
worker.my_personal_state = ...

future = client.submit(my_function, ...)

我们或许应该在 worker 上添加一个通用命名空间变量,作为此类信息的通用位置,但目前还没有。

作为全局变量

尽管如此,对于诸如与外部服务的连接之类的事情,全局变量并不完全是邪恶的。像 Tornado 这样的许多系统都使用全局单例。

如果你关心线程安全

请注意,worker 通常是多线程的。如果您的连接对象不是线程安全的,那么您可能需要为每个线程缓存不同的对象。为此,我建议使用 threading.local 对象。 Dask 在

使用了一个
from distributed.worker import thread_state

关于python - 如何在 dask/distributed 中存储 worker-local 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45008852/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com