如何在dask计算中定位触发异常的任务提交?

2024-09-30 14:39:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在调试使用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任务时的操作中

dask debugging guidelines之后,我运行了dask.config.set(scheduler='single-threaded'),但据我所知,这似乎没有什么区别

是否有一种方法可以配置dask以在提交时立即执行所有任务,或者有其他方法可以获得回溯,以便将调试指向提交指令的行


(这是一个警告,不是一个错误,但我已将其转化为一个例外,因为我想研究导致它的情况)


Tags: inpytasklibpackageslinesitemedia
1条回答
网友
1楼 · 发布于 2024-09-30 14:39:00

I have run dask.config.set(scheduler='single-threaded'), but this appears to make no difference, as far as I can tell.

当您在单线程调度程序中看到异常时,您可以像在任何其他异常中一样在ipython/jupyter会话中运行pdb.pm()(或者简单地说pdb),从而找出发生错误时的条件

相关问题 更多 >