From 7850dd87393e6e12b403ffc01880753ffab0d909 Mon Sep 17 00:00:00 2001 From: Edan Bainglass Date: Fri, 21 Feb 2025 06:25:56 +0000 Subject: [PATCH] Cache node per thread to reduce DB calls --- src/aiidalab_qe/common/process/tree.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/aiidalab_qe/common/process/tree.py b/src/aiidalab_qe/common/process/tree.py index 24f38194c..543d050ef 100644 --- a/src/aiidalab_qe/common/process/tree.py +++ b/src/aiidalab_qe/common/process/tree.py @@ -1,5 +1,6 @@ from __future__ import annotations +import threading import typing as t from copy import deepcopy @@ -156,10 +157,14 @@ def __init__( self.level = level self.on_inspect = on_inspect super().__init__(**kwargs) + self._node: dict[int, ProcessNodeType] = {} # thread_id: node @property def node(self) -> ProcessNodeType: - return orm.load_node(self.uuid) # type: ignore + if (tid := threading.get_ident()) not in self._node: + node = orm.load_node(self.uuid) + self._node[tid] = node + return self._node[tid] def initialize(self): self._build_header()