首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >dask-distributed workers上的初始化状态

dask-distributed workers上的初始化状态
EN

Stack Overflow用户
提问于 2019-02-01 05:44:35
回答 1查看 214关注 0票数 4

我正在尝试做一些事情,比如

代码语言:javascript
运行
复制
resource = MyResource()
def fn(x):
   something = dosemthing(x, resource)
   return something

client = Client()
results = client.map(fn, data)

问题是resource是不可序列化的,而且构造成本很高。因此,我希望在每个worker上构建它一次,并可供fn使用。

我该怎么做呢?或者,有没有其他方法可以让所有员工都可以使用resource

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-01 06:21:19

您总是可以构造一个惰性资源,例如

代码语言:javascript
运行
复制
class GiveAResource():
    resource = [None]
    def get_resource(self):
        if self.resource[0] is None:
            self.resource[0] = MyResource()
        return self.resource[0]

它的一个实例可以很好地在进程之间序列化,所以你可以将它作为输入包含到任何要在worker上执行的函数中,然后在它上调用.get_resource()将获得您的本地昂贵的资源(它将在稍后出现的任何worker上重新生成)。

此类最好在模块中定义,而不是在动态代码中定义。

这里没有锁,所以如果多个线程同时请求资源,而到目前为止还没有需要它,那么您将得到多余的工作。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54469698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档