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

How to submit tasks to the Python Dask scheduler from within a plain function

我想做这样的事情:

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

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

当我执行 sub() 时也提交了任务,但在刷新 GUI 后我没有看到这反映在 Dask GUI 中。如果你这样做,你可以确定它是否有效

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

sub().result()
# 'ok'

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

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

我怀疑当你最初调用 submit 而不是在函数中时,你的 repl 保留了对结果的引用 - 如果你在行尾添加了 ;要抑制输出,您会看到与调用 sub.

相同的行为