dv-flow-mgr 0.0.1.12919555073a1__py3-none-any.whl → 0.0.1.12922457458a1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- dv_flow/mgr/package_def.py +1 -1
- dv_flow/mgr/task_graph_builder.py +7 -0
- dv_flow/mgr/task_graph_runner_local.py +58 -8
- {dv_flow_mgr-0.0.1.12919555073a1.dist-info → dv_flow_mgr-0.0.1.12922457458a1.dist-info}/METADATA +1 -1
- {dv_flow_mgr-0.0.1.12919555073a1.dist-info → dv_flow_mgr-0.0.1.12922457458a1.dist-info}/RECORD +9 -9
- {dv_flow_mgr-0.0.1.12919555073a1.dist-info → dv_flow_mgr-0.0.1.12922457458a1.dist-info}/LICENSE +0 -0
- {dv_flow_mgr-0.0.1.12919555073a1.dist-info → dv_flow_mgr-0.0.1.12922457458a1.dist-info}/WHEEL +0 -0
- {dv_flow_mgr-0.0.1.12919555073a1.dist-info → dv_flow_mgr-0.0.1.12922457458a1.dist-info}/entry_points.txt +0 -0
- {dv_flow_mgr-0.0.1.12919555073a1.dist-info → dv_flow_mgr-0.0.1.12922457458a1.dist-info}/top_level.txt +0 -0
dv_flow/mgr/package_def.py
CHANGED
@@ -70,6 +70,13 @@ class TaskGraphBuilder(object):
|
|
70
70
|
|
71
71
|
depends = []
|
72
72
|
|
73
|
+
for dep in ctor_t.depends:
|
74
|
+
if not dep in self._task_m.keys():
|
75
|
+
task = self._mkTaskGraph(dep, rundir)
|
76
|
+
self._task_m[dep] = task
|
77
|
+
pass
|
78
|
+
depends.append(self._task_m[dep])
|
79
|
+
|
73
80
|
# The returned task should have all param references resolved
|
74
81
|
print("task_ctor=%s" % str(ctor_t.task_ctor), flush=True)
|
75
82
|
task = ctor_t.task_ctor(
|
@@ -23,7 +23,8 @@ import asyncio
|
|
23
23
|
import os
|
24
24
|
import yaml
|
25
25
|
import dataclasses as dc
|
26
|
-
from
|
26
|
+
from toposort import toposort
|
27
|
+
from typing import Any, Callable, ClassVar, Coroutine, Dict, List, Tuple, Union
|
27
28
|
from .fragment_def import FragmentDef
|
28
29
|
from .package import Package
|
29
30
|
from .pkg_rgy import PkgRgy
|
@@ -37,7 +38,8 @@ class TaskGraphRunnerLocal(TaskGraphRunner):
|
|
37
38
|
"""Session manages execution of a task graph"""
|
38
39
|
|
39
40
|
rundir : str
|
40
|
-
nproc : int =
|
41
|
+
nproc : int = 4
|
42
|
+
done_task_m : Dict = dc.field(default_factory=dict)
|
41
43
|
_workers : List = dc.field(default_factory=list)
|
42
44
|
|
43
45
|
_inst : ClassVar['TaskGraphRunner'] = None
|
@@ -62,15 +64,62 @@ class TaskGraphRunnerLocal(TaskGraphRunner):
|
|
62
64
|
task = [task]
|
63
65
|
else:
|
64
66
|
unwrap = False
|
65
|
-
|
66
|
-
run_o = list(t.do_run() for t in task)
|
67
67
|
|
68
|
-
|
68
|
+
dep_m = {}
|
69
|
+
task_m = {}
|
70
|
+
|
71
|
+
for t in task:
|
72
|
+
self._mkDeps(dep_m, task_m, t)
|
73
|
+
|
74
|
+
print("dep_m: %s" % str(dep_m))
|
75
|
+
|
76
|
+
order = list(toposort(dep_m))
|
77
|
+
|
78
|
+
active_task_l : List[Tuple[Task,Coroutine]]= []
|
79
|
+
# Now, iterate over the concurrent sets
|
80
|
+
for active_s in order:
|
81
|
+
|
82
|
+
# Check to see if all tasks are complete
|
83
|
+
done = True
|
84
|
+
for t in active_s:
|
85
|
+
while len(active_task_l) >= self.nproc and t not in self.done_task_m.keys():
|
86
|
+
# Wait for at least one job to complete
|
87
|
+
done, pending = await asyncio.wait(at[1] for at in active_task_l)
|
88
|
+
for d in done:
|
89
|
+
for i in range(len(active_task_l)):
|
90
|
+
if active_task_l[i][1] == d:
|
91
|
+
tt = active_task_l[i][0]
|
92
|
+
self.done_task_m[tt.name] = tt
|
93
|
+
active_task_l.pop(i)
|
94
|
+
break
|
95
|
+
if t not in self.done_task_m.keys():
|
96
|
+
task = task_m[t]
|
97
|
+
coro = asyncio.Task(task.do_run())
|
98
|
+
active_task_l.append((task, coro))
|
99
|
+
|
100
|
+
# Now, wait for tasks to complete
|
101
|
+
if len(active_task_l):
|
102
|
+
coros = list(at[1] for at in active_task_l)
|
103
|
+
res = await asyncio.gather(*coros)
|
104
|
+
|
105
|
+
# print("order: %s" % str(order))
|
106
|
+
#
|
107
|
+
# run_o = list(t.do_run() for t in task)
|
108
|
+
|
109
|
+
# ret = await asyncio.gather(*run_o)
|
110
|
+
ret = None
|
69
111
|
|
70
112
|
if unwrap:
|
71
|
-
return
|
113
|
+
return task.output
|
72
114
|
else:
|
73
|
-
return
|
115
|
+
return list(t.output for t in task)
|
116
|
+
|
117
|
+
def _mkDeps(self, dep_m, task_m, task):
|
118
|
+
if task.name not in dep_m.keys():
|
119
|
+
task_m[task.name] = task
|
120
|
+
dep_m[task.name] = set(t.name for t in task.depends)
|
121
|
+
for d in task.depends:
|
122
|
+
self._mkDeps(dep_m, task_m, d)
|
74
123
|
|
75
124
|
async def runTask(self, task : Task) -> 'TaskData':
|
76
125
|
return await task.do_run()
|
@@ -82,6 +131,7 @@ class TaskGraphRunnerLocal(TaskGraphRunner):
|
|
82
131
|
@dc.dataclass
|
83
132
|
class LocalRunnerWorker(object):
|
84
133
|
runner : TaskGraphRunnerLocal
|
85
|
-
|
134
|
+
task_s : List = dc.field(default_factory=list)
|
135
|
+
|
86
136
|
|
87
137
|
|
{dv_flow_mgr-0.0.1.12919555073a1.dist-info → dv_flow_mgr-0.0.1.12922457458a1.dist-info}/RECORD
RENAMED
@@ -4,16 +4,16 @@ dv_flow/mgr/fileset.py,sha256=FNvC5sU2ArxJ0OO3v8dXTv8zX-bZ5t0a0ljne0fQQ1o,1150
|
|
4
4
|
dv_flow/mgr/flow.py,sha256=UdgJOIqBS2wTRpO-sNWCCqO9oQFxDfGPGVD0r42aTrA,1562
|
5
5
|
dv_flow/mgr/fragment_def.py,sha256=p5i6ONtBWlDHTBFsduu3Z36_76Bn8PCIylp_xoZ7jfQ,1552
|
6
6
|
dv_flow/mgr/package.py,sha256=k6gaDun9mJeGwGsFP5YOYOaFLmKb3KyPZy5wGRgJd_E,1965
|
7
|
-
dv_flow/mgr/package_def.py,sha256=
|
7
|
+
dv_flow/mgr/package_def.py,sha256=fdPzhoCqZ-w336ktDVWZ1HKKFk9Zi6iehCcS-iW_EvU,11454
|
8
8
|
dv_flow/mgr/package_import_spec.py,sha256=bStPa727wAKMcixydVY1Ht6ylzXsSMy2K31HWPXhc9k,921
|
9
9
|
dv_flow/mgr/parameters.py,sha256=kUjRss5VtMMz5eL3-Z_M6BS-wFs7MhQu3ANXO54UPo0,896
|
10
10
|
dv_flow/mgr/pkg_rgy.py,sha256=y7HOBZAgKHL4ItnFvjT0lWC_ne81qJi4lJGNLt69au0,2581
|
11
11
|
dv_flow/mgr/task.py,sha256=gaMlOiV4pKmEBzewTkVle3RN2zfKPkSdYW3oJX0j_Jg,6421
|
12
12
|
dv_flow/mgr/task_data.py,sha256=-6Dqa3oUI7RJc1Js2SRSnhxNTcASkamXFYMN6UiknZQ,10376
|
13
13
|
dv_flow/mgr/task_def.py,sha256=96hSwqJo0MazJ1VcLhovYRmNCplsNLt47AumtyjSddU,1690
|
14
|
-
dv_flow/mgr/task_graph_builder.py,sha256=
|
14
|
+
dv_flow/mgr/task_graph_builder.py,sha256=8G9Q-eC0OZmHw0V3F1CxCkXzDZWrYnfVFJ9hQET9RAY,7376
|
15
15
|
dv_flow/mgr/task_graph_runner.py,sha256=x2e-wpJFhZ4Zkov30PtC8CuKyOK6htA1SKzmrcVBI9M,2154
|
16
|
-
dv_flow/mgr/task_graph_runner_local.py,sha256=
|
16
|
+
dv_flow/mgr/task_graph_runner_local.py,sha256=QDCUyFj_m4hJTUsZD5nCUCnPu3hysdk65-gVA8eJ894,4546
|
17
17
|
dv_flow/mgr/task_memento.py,sha256=C7VTQpBhDEoYuDmE6YTM-6TLMLnqHp6Y0Vat1aTgtCs,1096
|
18
18
|
dv_flow/mgr/util.py,sha256=WKwMF4vwYdte5wzieSTDpZTmZU0sjQro3Ofi9moCayE,613
|
19
19
|
dv_flow/mgr/cmds/cmd_run.py,sha256=PqAbPMwqovaaq14tnNrCvP7-De8lMI09X0R7d6RIbwY,2691
|
@@ -23,9 +23,9 @@ dv_flow/mgr/std/flow.dv,sha256=pSpzrPPEu_L8DHccGfArxsKYgUfyQidShZc0ShgGtsY,500
|
|
23
23
|
dv_flow/mgr/std/message.py,sha256=BPTHnEMD4tBufQ9LvsS9Sa_0xjaJATbBpwqosWslvVA,193
|
24
24
|
dv_flow/mgr/std/task_fileset.py,sha256=UzTYONvK0X9rgy3rP9LiX4giBU8SyCCJav0LSNUJ1Qg,3140
|
25
25
|
dv_flow/mgr/std/task_null.py,sha256=UEJ3fIoIMYWVsagiQC7GHD23UES7WoH4wtq94b4tcs4,265
|
26
|
-
dv_flow_mgr-0.0.1.
|
27
|
-
dv_flow_mgr-0.0.1.
|
28
|
-
dv_flow_mgr-0.0.1.
|
29
|
-
dv_flow_mgr-0.0.1.
|
30
|
-
dv_flow_mgr-0.0.1.
|
31
|
-
dv_flow_mgr-0.0.1.
|
26
|
+
dv_flow_mgr-0.0.1.12922457458a1.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
27
|
+
dv_flow_mgr-0.0.1.12922457458a1.dist-info/METADATA,sha256=Rsa9WygYLLdeeSpss1f5HJ4ZGwGjrlobtza7ZjNnXIs,13276
|
28
|
+
dv_flow_mgr-0.0.1.12922457458a1.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
29
|
+
dv_flow_mgr-0.0.1.12922457458a1.dist-info/entry_points.txt,sha256=1roy8wAFM48LabOvr6jiOw0MUs-qE8X3Vf8YykPazxk,50
|
30
|
+
dv_flow_mgr-0.0.1.12922457458a1.dist-info/top_level.txt,sha256=amfVTkggzYPtWwLqNmRukfz1Buu0pGS2SrYBBLhXm04,8
|
31
|
+
dv_flow_mgr-0.0.1.12922457458a1.dist-info/RECORD,,
|
{dv_flow_mgr-0.0.1.12919555073a1.dist-info → dv_flow_mgr-0.0.1.12922457458a1.dist-info}/LICENSE
RENAMED
File without changes
|
{dv_flow_mgr-0.0.1.12919555073a1.dist-info → dv_flow_mgr-0.0.1.12922457458a1.dist-info}/WHEEL
RENAMED
File without changes
|
File without changes
|
File without changes
|