在 dask.distributed 上使用期货时,有没有办法区分pending
当前正在评估的期货和仍在队列中的期货?
原因是我将大量任务(~8000)提交给一小部分工作人员(100),因此并非所有任务都可以立即处理。这些任务涉及调用第三方可执行文件 ( via subprocess.check_output
),在极少数情况下会进入无限循环。
因此,我想取消运行时间过长的期货(使用任意超时)。然而,似乎没有办法判断未来是否已经处于一种pending
状态很长时间,因为计算时间比平时长,或者仅仅是因为它必须等待工作人员可用。
我的设置涉及一个 SGE 集群,分别运行 adask-scheduler
和dask-worker
job/job-array。@timeout_decorator.timeout(60, use_signals=False)
我尝试使用timeout_decorator 包直接在提交的 Python 函数中设置超时,但出现以下错误:
"daemonic processes are not allowed to have children"
任何帮助将非常感激。