Python 使用dask多线程模块

Python 使用dask多线程模块,python,dask,Python,Dask,我正在尝试使用dask的多线程模块。此代码 def foo(arg): return arg*2 jobs = [] t = delayed(foo)(100) jobs.append(t) j = delayed(jobs, pure=True) #j = j.compute() j = j.compute(get=dask.multiprocessing.get) print("class:", type(j[0])) 执行时打印('class:',),但是如果我运行注释行(即,不

我正在尝试使用dask的多线程模块。此代码

def foo(arg):
  return arg*2

jobs = []
t = delayed(foo)(100)
jobs.append(t)

j = delayed(jobs, pure=True)
#j = j.compute()
j = j.compute(get=dask.multiprocessing.get)
print("class:", type(j[0]))
执行时打印
('class:',)
,但是如果我运行注释行(即,不使用
多处理.get
),那么我实际上得到了正确的结果
100('class:',)
我做错了什么吗


相关问题:当未指定任何内容时,dask中的默认
get
是什么?

如果您的目标是计算延迟对象列表,那么我建议使用dask的计算函数而不是计算方法

from dask import delayed, compute
import dask.multiprocessing

def foo(arg):
  return arg*2

jobs = [delayed(foo)(100)]

>>> compute(*jobs, get=dask.multiprocessing.get)
(200,)

为什么要在另一个延迟的函数调用中包装延迟的函数调用?这是由。多处理调度程序执行fuse优化,导致此问题。希望很快就能解决这个问题,但是现在不要使用多进程调度程序。延迟对象的默认计划程序是线程计划,它没有此问题。此问题仍然相关,但在此处以不同的方式修复:。现在所有情况下的结果都是一样的。