如何在快速计算中找到触发异常的任务提交?

时间:2019-05-06 09:28:32

标签: python debugging dask pdb

我正在尝试调试使用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在提交后立即执行所有任务,或者通过某种其他方式获得回溯,以便可以将调试指向提交指令的行?


(这是一个警告,而不是错误,但由于我想研究造成这种情况的情况,因此已将其变为异常)

1 个答案:

答案 0 :(得分:0)

  

我已经运行了dask.config.set(scheduler ='single-threaded'),但是据我所知,这似乎没有什么区别。

当您在单线程调度程序中看到异常时,就可以像对待其他任何异常一样运行pdb.pm()(或者在ipython / jupyter会话中简单地运行pdb),因此找出发生错误时的情况。