【发布时间】:2020-08-18 20:35:40
【问题描述】:
总结:
目标是运行从一组步骤(图节点)及其依赖项(图边)创建的工作流。
是否可以创建networkx.DiGraph() 并运行遍历,在不同节点上执行回调?
示例:
请查看示例图:
对于这组任务和依赖项,执行的可能性是:
- 步骤
a作为入口点 - 步骤
b紧跟在步骤a之后 - 步骤
c和d在步骤b之后并行(步骤c首先完成) - 在步骤
c之后执行步骤g(而步骤d仍在进行中) - 步骤
e紧跟在步骤d之后(因为步骤c已经完成) - 步骤
f紧跟在步骤e之后
或者,
- 步骤
a作为入口点 - 步骤
b紧跟在步骤a之后 - 步骤
c和d在步骤b之后并行(步骤d首先完成) - 步骤
g和e并行(因为步骤d在步骤c之前完成) - 步骤
f紧跟在步骤e之后
下面,请在networkx中找到用于创建此示例图的代码sn-p:
import networkx as nx
W = nx.DiGraph()
nodes = ["a", "b", "c", "d", "e", "f"]
edges = [("a", "b"), ("b", "c"), ("c", "g"), ("b","d"), ("c", "e"), ("d", "e"), ("e", "f")]
W.add_nodes_from(nodes)
W.add_edges_from(edges)
是否有已知的解决方案以前面描述的方式遍历图形,打印节点的值(步骤名称)并随机休眠几秒钟以模拟任务运行并执行一些计算? (使用基本的多线程)
谢谢。
【问题讨论】:
-
不清楚你需要什么。 NetworkX 中有一些遍历算法,例如 BFS 或 DFS。您可以编写一个自定义遍历函数,您可以在其中设置延迟。
-
简而言之,我正在尝试模拟运行依赖任务的层次结构。我的想法是用一个图来表示工作流,看看是否可以使用networkx来构建图并遍历它。我认为 BFS 比 DFS 更接近可以实现这一点的遍历算法,但我担心这还不够。我将尝试审查我对帖子的表述,希望能进一步澄清。
标签: python multithreading graph task networkx