首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有一种方法来传递变量,以便在dispy中设置()?

是否有一种方法来传递变量,以便在dispy中设置()?
EN

Stack Overflow用户
提问于 2015-07-07 01:11:33
回答 1查看 169关注 0票数 1

我需要将一个变量传递给dispy节点的setup()方法,这样我就可以告诉节点要从一个配置文件加载哪个数据集。否则,我必须为每个数据集编写一个特定的脚本,这将是痛苦的。

代码语言:javascript
复制
def setup(): # executed on each node before jobs are scheduled
    # read data in file to global variable
    global data
    data = open('file.dat').read()
    return 0
...
if __name__ == '__main__':
    import dispy
    cluster = dispy.JobCluster(compute, depends=['file.dat'], setup=setup, cleanup=cleanup)

因此,我想传递字符串"file.dat"来设置,这样每个节点就可以实例化数据一次(因为它很大)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-07 02:28:12

让我看看我是否理解这个问题。您希望将一个参数传递给安装程序,但是setup的实际调用发生在函数JobCluster的某个地方。这个调用不知道它应该传递一个参数。对吗?

解决方案是使用标准库functools.partial。你做这样的事:

代码语言:javascript
复制
if __name__ == '__main__':
    import dispy
    f = functools.partial(setup,"file.dat")
    cluster = dispy.JobCluster(compute, depends=['file.dat'], setup=f, cleanup=cleanup)

partial返回的对象,当没有参数调用时,用一个位置参数("file.dat")调用setup。您必须重写安装程序才能处理此参数,如下所示:

代码语言:javascript
复制
def setup(s): # executed on each node before jobs are scheduled
    # read data in file to global variable
    global data
    data = open(s).read()
    return 0
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31258188

复制
相关文章

相似问题

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