diff --git a/src/ui/MainWindow.py b/src/ui/MainWindow.py
index c56980f..da25a9e 100644
--- a/src/ui/MainWindow.py
+++ b/src/ui/MainWindow.py
@@ -546,6 +546,10 @@ class MainWindow(QMainWindow):
# Progressbar für Transformationen in Statusbar
self.transformation_progress_bar = None
+ # Gespeicherte Worker-Pool-Metriken (werden vor Shutdown gecacht)
+ self.last_saxon_metrics = None
+ self.last_fop_metrics = None
+
# Mapping: xml_file_path_str → QTreeWidgetItem (für Progress Bar und Icon Updates)
self.xml_item_map = {}
@@ -4371,11 +4375,19 @@ class MainWindow(QMainWindow):
# Erfasse RAM-Verbrauch nach Transformation
import transform
+ from copy import deepcopy
if transform._saxon_worker_pool:
transform._saxon_worker_pool.capture_ram_after_transform()
+ # Speichere Metriken vor Shutdown (für späteren Zugriff im Dialog)
+ self.last_saxon_metrics = deepcopy(transform._saxon_worker_pool.metrics)
+ logger.debug("Saxon Worker-Pool Metriken gespeichert")
+
if transform._fop_worker_pool:
transform._fop_worker_pool.capture_ram_after_transform()
+ # Speichere Metriken vor Shutdown (für späteren Zugriff im Dialog)
+ self.last_fop_metrics = deepcopy(transform._fop_worker_pool.metrics)
+ logger.debug("FOP Worker-Pool Metriken gespeichert")
# Beende Worker-Pools (RAM-Optimierung - Pools werden bei nächster Transformation neu gestartet)
self._shutdown_saxon_worker_pool()
diff --git a/src/ui/WorkerPoolMetricsDialog.py b/src/ui/WorkerPoolMetricsDialog.py
index fd8ae98..c80bff5 100644
--- a/src/ui/WorkerPoolMetricsDialog.py
+++ b/src/ui/WorkerPoolMetricsDialog.py
@@ -141,19 +141,26 @@ class WorkerPoolMetricsDialog(QDialog):
def _load_metrics(self):
"""Lädt und zeigt die Metriken an."""
- import transform
+ # Hole MainWindow-Instanz (parent)
+ main_window = self.parent()
- # Saxon Worker Pool
- if transform._saxon_worker_pool:
- self._update_metrics_tab(self.saxon_tab, transform._saxon_worker_pool, "Saxon Worker Pool")
+ # Saxon Worker Pool - verwende gespeicherte Metriken
+ if hasattr(main_window, "last_saxon_metrics") and main_window.last_saxon_metrics:
+ self._update_metrics_tab_from_metrics(
+ self.saxon_tab, main_window.last_saxon_metrics, "Saxon Worker Pool"
+ )
else:
- self._set_tab_status(self.saxon_tab, "Nicht aktiviert")
+ self._set_tab_status(
+ self.saxon_tab, "Keine Metriken verfügbar - bitte erst eine Transformation durchführen"
+ )
- # FOP Worker Pool
- if transform._fop_worker_pool:
- self._update_metrics_tab(self.fop_tab, transform._fop_worker_pool, "FOP Worker Pool")
+ # FOP Worker Pool - verwende gespeicherte Metriken
+ if hasattr(main_window, "last_fop_metrics") and main_window.last_fop_metrics:
+ self._update_metrics_tab_from_metrics(self.fop_tab, main_window.last_fop_metrics, "FOP Worker Pool")
else:
- self._set_tab_status(self.fop_tab, "Nicht aktiviert")
+ self._set_tab_status(
+ self.fop_tab, "Keine Metriken verfügbar - bitte erst eine Transformation durchführen"
+ )
def _set_tab_status(self, tab: QWidget, status: str):
"""
@@ -167,19 +174,18 @@ class WorkerPoolMetricsDialog(QDialog):
if status_label:
status_label.setText(f"Status: {status}")
- def _update_metrics_tab(self, tab: QWidget, pool, pool_name: str):
+ def _update_metrics_tab_from_metrics(self, tab: QWidget, metrics, pool_name: str):
"""
- Aktualisiert die Metriken in einem Tab.
+ Aktualisiert die Metriken in einem Tab (direkt aus Metriken-Objekt).
Args:
tab: Das Tab-Widget
- pool: Der Worker-Pool (Saxon oder FOP)
+ metrics: Das WorkerPoolMetrics-Objekt
pool_name: Name des Pools
"""
- metrics = pool.metrics
-
- # Status
- self._set_tab_status(tab, f"Aktiviert ({pool.num_workers} Worker)")
+ # Status - berechne Worker-Anzahl aus Metriken
+ num_workers = len(metrics.worker_start_times) if metrics.worker_start_times else 0
+ self._set_tab_status(tab, f"Letzte Transformation ({num_workers} Worker)")
# Kompilierung
compile_time_label = tab.findChild(QLabel, "compile_time_label")