New notion of local isolated computation for python nodes using meshroom_compute

Reoganization
- BaseNode: is the base class for all nodes
- Node: is now dedicated to python nodes, with the implentation directly
in the process function
- CommandLineNode: dedicated to generate and run external command lines
This commit is contained in:
Fabien Castan 2025-03-24 00:03:45 +01:00
parent faece7efca
commit 727a4d129b
6 changed files with 288 additions and 152 deletions

View file

@ -183,10 +183,11 @@ class ChunksMonitor(QObject):
return self.statusFiles, self.monitorableChunks
elif self.filePollerRefresh is PollerRefreshStatus.MINIMAL_ENABLED.value:
for c in self.monitorableChunks:
# Only chunks that are run externally should be monitored; when run locally, status changes are already notified
if c.isExtern():
# Chunks with an ERROR status may be re-submitted externally and should thus still be monitored
if c._status.status in {Status.SUBMITTED, Status.RUNNING, Status.ERROR}:
# Only chunks that are run externally or local_isolated should be monitored,
# when run locally, status changes are already notified.
# Chunks with an ERROR status may be re-submitted externally and should thus still be monitored
if (c.isExtern() and c._status.status in (Status.SUBMITTED, Status.RUNNING, Status.ERROR)) or (
(c._status.execMode is ExecMode.LOCAL_ISOLATED) and (c._status.status in (Status.SUBMITTED, Status.RUNNING))):
files.append(c.statusFile)
chunks.append(c)
return files, chunks
@ -582,8 +583,8 @@ class UIGraph(QObject):
def updateGraphComputingStatus(self):
# update graph computing status
computingLocally = any([
(ch.status.execMode == ExecMode.LOCAL and
ch.status.sessionUid == sessionUid and
(((ch.status.execMode == ExecMode.LOCAL and ch.status.sessionUid == sessionUid) or
ch.status.execMode == ExecMode.LOCAL_ISOLATED) and
ch.status.status in (Status.RUNNING, Status.SUBMITTED))
for ch in self._sortedDFSChunks])
submitted = any([ch.status.status == Status.SUBMITTED for ch in self._sortedDFSChunks])