如何从普通函数中向Python Dask调度程序提交任务

问题描述 投票:0回答:2

我想做这样的事情:

client = Client()
def sub():
    client.submit(lambda: 'ok')

调用sub()不会提交任务。直接调用client.submit(lambda: 'ok')。我在说明此行为的文档中找不到任何内容。 (我使用的是Dask 1.1.4版,目前无法升级)

python dask dask-distributed
2个回答
0
投票

我在执行sub()时也提交了任务,但是刷新GUI后,我在Dask GUI中看不到这一点。您可以检查是否可以正常工作

def sub():
    return client.submit(lambda: 'ok')

sub().result()
# 'ok'

0
投票

在您的原始代码中,由submit生成的Future未存储在变量中,并且在函数sub完成后没有对其的引用。因此,Dask将注意到,在那个将来,不再有客户对它感兴趣,它将从系统中清除掉-可能它已经在运行,并且结果的内存将被释放。

这是预期的行为,在您的代码中确定哪些期货引用了它们,这是管理系统内存的基本概念,请参阅https://distributed.dask.org/en/latest/memory.html#clearing-data

[我怀疑当您最初不在函数中调用submit时,您的repl保留了对结果的引用-如果您在行的末尾添加了;以抑制输出,则您将看到了与调用sub相同的行为。

© www.soinside.com 2019 - 2024. All rights reserved.