擅长:python、mysql、java
<p>我编写了一个并行运行DAG的程序,这正是您所需要的。这是作为开源项目的一部分完成的。解决方案使用进程而不是线程,但您可以调整它。其基本思想是拥有一个进程池并跟踪每个任务的状态,无论何时任何任务完成,都会发送下一个任务。通过在<a href="https://en.wikipedia.org/wiki/Topological_sorting" rel="nofollow noreferrer">topological order</a>中迭代DAG来确定顺序</p>
<p>如果任何任务失败,它们的所有下游依赖项都将中止。程序继续运行,直到没有更多的任务要运行,代码如下:<a href="https://github.com/ploomber/ploomber/blob/0.4.1/src/ploomber/executors/Parallel.py" rel="nofollow noreferrer">https://github.com/ploomber/ploomber/blob/0.4.1/src/ploomber/executors/Parallel.py</a></p>
<p>我看到您正在尝试在Paperill中运行笔记本,我开发的工具正好支持这一点:它可以运行任意复杂的管道(任务可以参数化Jupyter笔记本)。看起来很适合您的用例:<a href="https://github.com/ploomber/ploomber" rel="nofollow noreferrer">https://github.com/ploomber/ploomber</a></p>