python - Networkx 作为任务队列?

标签 python celery networkx task-queue directed-acyclic-graphs

我在 networkx 中有一个有向无环图。每个节点代表一个任务,节点的前任是任务依赖项(给定任务在其依赖项执行之前无法执行)。

我想在异步任务队列中“执行”图形,类似于 celery 提供的功能(以便我可以轮询作业的状态、检索结果等)。 Celery 不提供创建 DAG 的能力(据我所知),并且一旦所有依赖项都完成就能够继续执行 task 将是至关重要的(DAG 可能有多个路径和即使一项任务很慢/阻塞,也有可能继续执行其他任务等)。

是否有关于我如何实现这一点的任何简单示例,或者甚至可以将 networkxcelery 集成?

最佳答案

您可以为此使用的一个库是 taskgraph .它允许您定义任务图,然后以多线程/多进程的方式执行这些任务。它避免了重新运行结果已经是最新的任务,类似于 make 程序。

要执行您的 networkx 图,您将迭代 topological order 中的所有节点。 ,收集每个的即时依赖项,并调用 task_graph.add_task。此函数将返回新添加任务的句柄,这使您可以将其用作后续添加任务的依赖项(这就是节点迭代顺序很重要的原因)

有关替代解决方案,另请参阅 this question .

关于python - Networkx 作为任务队列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36113114/

相关文章:

python - 从文件加载大型数组,numpy 比列表追加慢。瓶颈在哪里?

python - 如何使用 xlsxwriter - python 更改图例字体大小

python - 可以使用 python 3 从 networkx 获取分层图吗?

python - 从相似度矩阵创建 NetworkX 图

python - networkx 中更大图的完全连接子图

python - Django 进行条件格式化的方法

python - 如何在没有子包的情况下创建包含多个文件的python包

python - Airflow - Python 文件不在同一个 DAG 文件夹中

python - 不同的 Celery 实例对象使用相同的代理 - 这是一个好的实践吗?

python - Celery:实例在一两周后变得缓慢