浏览代码

Revert "Fix leaked semaphore object warning (#4132)"

This reverts commit c202f3eddfcc60a602fa21e8d5eebb37ab239886.
Falko Schindler 3 月之前
父节点
当前提交
942e5e4855
共有 3 个文件被更改,包括 4 次插入32 次删除
  1. 1 3
      nicegui/native/__init__.py
  2. 3 27
      nicegui/native/native.py
  3. 0 2
      nicegui/native/native_mode.py

+ 1 - 3
nicegui/native/__init__.py

@@ -1,4 +1,4 @@
-from .native import WindowProxy, create_queues, method_queue, remove_queues, response_queue
+from .native import WindowProxy, method_queue, response_queue
 from .native_config import NativeConfig
 from .native_mode import activate, find_open_port
 
@@ -6,9 +6,7 @@ __all__ = [
     'NativeConfig',
     'WindowProxy',
     'activate',
-    'create_queues',
     'find_open_port',
     'method_queue',
-    'remove_queues',
     'response_queue',
 ]

+ 3 - 27
nicegui/native/native.py

@@ -2,34 +2,13 @@
 import inspect
 import warnings
 from multiprocessing import Queue
-from typing import Any, Callable, Optional, Tuple
+from typing import Any, Callable, Tuple
 
 from .. import run
 from ..logging import log
 
-method_queue: Optional[Queue] = None
-response_queue: Optional[Queue] = None
-
-
-def create_queues() -> None:
-    """Create the message queues."""
-    global method_queue, response_queue  # pylint: disable=global-statement # noqa: PLW0603
-    method_queue = Queue()
-    response_queue = Queue()
-
-
-def remove_queues() -> None:
-    """Remove the message queues by closing them and waiting for threads to finish."""
-    global method_queue, response_queue  # pylint: disable=global-statement # noqa: PLW0603
-    if method_queue is not None:
-        method_queue.close()
-        method_queue.join_thread()
-        method_queue = None
-    if response_queue is not None:
-        response_queue.close()
-        response_queue.join_thread()
-        response_queue = None
-
+method_queue: Queue = Queue()
+response_queue: Queue = Queue()
 
 try:
     with warnings.catch_warnings():
@@ -141,14 +120,11 @@ try:
 
         def _send(self, *args: Any, **kwargs: Any) -> None:
             name = inspect.currentframe().f_back.f_code.co_name  # type: ignore
-            assert method_queue is not None
             method_queue.put((name, args, kwargs))
 
         async def _request(self, *args: Any, **kwargs: Any) -> Any:
             def wrapper(*args: Any, **kwargs: Any) -> Any:
                 try:
-                    assert method_queue is not None
-                    assert response_queue is not None
                     method_queue.put((name, args, kwargs))
                     return response_queue.get()  # wait for the method to be called and writing its result to the queue
                 except Exception:

+ 0 - 2
nicegui/native/native_mode.py

@@ -104,7 +104,6 @@ def activate(host: str, port: int, title: str, width: int, height: int, fullscre
         while not core.app.is_stopped:
             time.sleep(0.1)
         _thread.interrupt_main()
-        native.remove_queues()
 
     if not optional_features.has('webview'):
         log.error('Native mode is not supported in this configuration.\n'
@@ -112,7 +111,6 @@ def activate(host: str, port: int, title: str, width: int, height: int, fullscre
         sys.exit(1)
 
     mp.freeze_support()
-    native.create_queues()
     args = host, port, title, width, height, fullscreen, frameless, native.method_queue, native.response_queue
     process = mp.Process(target=_open_window, args=args, daemon=True)
     process.start()