python - 如何使用 Python 创建 DAG(用于基于依赖项的任务执行。)
问题描述
我正在尝试用 python 编写一个程序,它将使用并行和/或串行执行尽可能高效地执行以下任务。这些任务对它们中的每一个都有依赖关系,并且为了执行任务,必须执行其所有依赖关系。
IE。只有在之前执行过任务 B、C、D 时,才能执行任务 A。我们还可以看到任务 C、H、J 没有依赖关系,因此它们可以并行执行。
我意识到它可以在有向无环图的帮助下完成,但我不确定如何使用以下列表创建 DAG。非常感谢任何帮助。谢谢!!
"A" : ["B", "C", "D"],
"B" : ["E"],
"C" : [],
"D" : ["C", "F"],
"E" : ["H"],
"F" : ["B", "C"],
"G" : ["H", "C"],
"H" : [],
"I" : ["H", "C", "F"],
"J" : []
解决方案
这称为“拓扑排序”。有几个 Python 模块可以做到这一点,包括https://pypi.org/project/toposort/。请注意,Linux 包含一个可以执行此操作的命令行工具tsort
,无需编程。
推荐阅读
- python - 无法在 Flask 应用程序中写入 CSV 文件
- c - 使用 Stack 构建时如何包含从 haskell 源文件生成的“xxx_stub.h”文件
- java - 在 java Hashtable 内部使用哪种解析技术?
- sqlite - 向数据库添加值但外键约束失败
- java - 找不到符号 - 类 InventoryItem
- git - 每次推送时如何提示 git 用户登录?
- javascript - Google 地图 API - 按邮政编码搜索
- java - 在 Java 中嵌套 CompletionStages 以使内部块在外部块之前运行
- python - 没有名为 pymysql 的模块 - aws 无服务器框架
- c# - 从文件中读取时,索引超出了数组的范围