У меня есть несколько «процессов», каждый из которых реализован как класс (реализующий интерфейс - process
) и ряд «наборов данных», снова представленных классом - dataset
.генерировать и выполнять графики обработки в сетиx
Направленный ациклический граф наборов данных и их dependecies может быть created..It может выглядеть примерно так:
root
/ \
dataset1a dataset1b
| |
dataset2 dataset2b
/ | \ / \
dset3a | dset3b dset4a dset4b
\ | /
\ | /
\ | /
dataset3a4a
Чтобы добраться до каждого набора данных, процесс (представленный process
класс) должен быть применен. В настоящее время я создаю DiGraph
с сетью x, где каждый объект набора данных является узлом, а процесс для перехода на узел X
является атрибутом узла, указывающего на объект process
. ROOT
- всего лишь фиктивный узел, обеспечивающий исходный узел.
Является ли это хорошим способом представления графика с помощью networkx? Учитывая, что dataset1a
и dataset1b
существуют и их decendants должны быть созданы (где каждый предыдущий набор данных является входом в process
класс) ... что это хороший способ обхода графа таким образом, что:
- узел является не посещаются до тех пор, пока не будут посещены все его «иждивенцы» (и, следовательно, создаваемые массивы данных)
- Зависимый «узел» может быть найден ... например если я нахожусь на узле
dataset3a4a
, я должен быть в состоянии обнаружить все «входы» для создания этого набора данных -dset3a
,dset4a
иdataset2
.