Skip to content

Commit a764f58

Browse files
committed
Avoid loading every module for each process
Reduces memory usage by 140MB across all the components.
1 parent e5b1802 commit a764f58

File tree

1 file changed

+18
-11
lines changed

1 file changed

+18
-11
lines changed

mousetracks2/components/__init__.py

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
from dataclasses import dataclass
2020
from typing import TYPE_CHECKING, Any, Generic, TypeVar
2121

22-
from . import app_detection, gui, ipc, processing, tracking
22+
from . import ipc
2323
from ..config import GlobalConfig
2424
from ..constants import IS_EXE, UPDATES_PER_SECOND
2525
from ..exceptions import ExitRequest
@@ -101,12 +101,7 @@ def __init__(self, use_gui: bool = True) -> None:
101101

102102
self._q_main: Queue[ipc.Message] = Queue()
103103

104-
self._q_gui: Queue[ipc.Message] = Queue()
105-
self._p_gui = multiprocessing.Process(target=gui.GUI.launch, args=(self._q_main, self._q_gui))
106-
self._p_gui.daemon = True
107-
if self.use_gui:
108-
self._p_gui.start()
109-
self._create_tracking_processes()
104+
self._create_tracking_processes(first_run=True)
110105

111106
# Disable show/hide if console is already hidden
112107
handle = self._get_console_handle()
@@ -183,23 +178,35 @@ def stop_tracking(self) -> None:
183178

184179
print('[Hub] Processes shut down')
185180

186-
def _create_tracking_processes(self) -> None:
181+
def _create_tracking_processes(self, first_run: bool = False) -> None:
187182
"""Setup the processes required for tracking.
188183
If these are shut down, then a new process needs to be created.
189184
"""
190185
print('[Hub] Creating tracking processes...')
186+
from .app_detection import AppDetection
187+
from .gui import GUI
188+
from .processing import Processing
189+
from .tracking import Tracking
190+
191+
if first_run:
192+
self._q_gui: Queue[ipc.Message] = Queue()
193+
self._p_gui = multiprocessing.Process(target=GUI.launch, args=(self._q_main, self._q_gui))
194+
self._p_gui.daemon = True
195+
if self.use_gui:
196+
self._p_gui.start()
197+
191198
self._q_tracking: Queue[ipc.Message] = Queue()
192-
self._p_tracking = multiprocessing.Process(target=tracking.Tracking.launch, args=(self._q_main, self._q_tracking))
199+
self._p_tracking = multiprocessing.Process(target=Tracking.launch, args=(self._q_main, self._q_tracking))
193200
self._p_tracking.daemon = True
194201
self._p_tracking.start()
195202

196203
self._q_processing: Queue[ipc.Message] = Queue()
197-
self._p_processing = multiprocessing.Process(target=processing.Processing.launch, args=(self._q_main, self._q_processing))
204+
self._p_processing = multiprocessing.Process(target=Processing.launch, args=(self._q_main, self._q_processing))
198205
self._p_processing.daemon = True
199206
self._p_processing.start()
200207

201208
self._q_app_detection: Queue[ipc.Message] = Queue()
202-
self._p_app_detection = multiprocessing.Process(target=app_detection.AppDetection.launch, args=(self._q_main, self._q_app_detection))
209+
self._p_app_detection = multiprocessing.Process(target=AppDetection.launch, args=(self._q_main, self._q_app_detection))
203210
self._p_app_detection.daemon = True
204211
self._p_app_detection.start()
205212

0 commit comments

Comments
 (0)