我正在尝试调试使用dask进行计算的代码。异常回溯以:
结尾 File "/media/nas/x21324/miniconda3/envs/py37d/lib/python3.7/site-packages/dask/core.py", line 118, in _execute_task
args2 = [_execute_task(a, cache) for a in args]
File "/media/nas/x21324/miniconda3/envs/py37d/lib/python3.7/site-packages/dask/core.py", line 118, in <listcomp>
args2 = [_execute_task(a, cache) for a in args]
File "/media/nas/x21324/miniconda3/envs/py37d/lib/python3.7/site-packages/dask/core.py", line 119, in _execute_task
return func(*args2)
File "/media/nas/x21324/miniconda3/envs/py37d/lib/python3.7/site-packages/dask/optimization.py", line 942, in __call__
dict(zip(self.inkeys, args)))
File "/media/nas/x21324/miniconda3/envs/py37d/lib/python3.7/site-packages/dask/core.py", line 149, in get
result = _execute_task(task, cache)
File "/media/nas/x21324/miniconda3/envs/py37d/lib/python3.7/site-packages/dask/core.py", line 119, in _execute_task
return func(*args2)
RuntimeWarning: invalid value encountered in less_equal
在许多级别上,会导致一个.compute(...)
调用,该调用要么被显式调用,要么是其他操作触发计算(在此情况下为numpy.ma.masked_invalid
)的结果。在计划dask任务时,实际的触发bug的代码在其他地方。
在dask debugging guidelines之后,我已经运行dask.config.set(scheduler='single-threaded')
,但据我所知,这似乎没有任何作用。
有没有一种方法可以配置dask在提交后立即执行所有任务,或者通过某种其他方式获得回溯,以便可以将调试指向提交指令的行?
(这是一个警告,而不是错误,但由于我想研究造成这种情况的情况,因此已将其变为异常)
答案 0 :(得分:0)
我已经运行了dask.config.set(scheduler ='single-threaded'),但是据我所知,这似乎没有什么区别。
当您在单线程调度程序中看到异常时,就可以像对待其他任何异常一样运行pdb.pm()
(或者在ipython / jupyter会话中简单地运行pdb
),因此找出发生错误时的情况。