use explicit multiprocessing context for creating Pipe in subproc.py (#1102)

This commit is contained in:
maxhuettenrauch 2024-04-19 11:08:53 +02:00 committed by GitHub
parent a043711c10
commit 9c0b3e7292
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -3,7 +3,7 @@ import multiprocessing
import time import time
from collections import OrderedDict from collections import OrderedDict
from collections.abc import Callable from collections.abc import Callable
from multiprocessing import Pipe, connection from multiprocessing import connection
from multiprocessing.context import BaseContext from multiprocessing.context import BaseContext
from typing import Any, Literal from typing import Any, Literal
@ -149,11 +149,11 @@ class SubprocEnvWorker(EnvWorker):
share_memory: bool = False, share_memory: bool = False,
context: BaseContext | Literal["fork", "spawn"] | None = None, context: BaseContext | Literal["fork", "spawn"] | None = None,
) -> None: ) -> None:
self.parent_remote, self.child_remote = Pipe()
self.share_memory = share_memory
self.buffer: dict | tuple | ShArray | None = None
if not isinstance(context, BaseContext): if not isinstance(context, BaseContext):
context = multiprocessing.get_context(context) context = multiprocessing.get_context(context)
self.parent_remote, self.child_remote = context.Pipe()
self.share_memory = share_memory
self.buffer: dict | tuple | ShArray | None = None
assert hasattr(context, "Process") # for mypy assert hasattr(context, "Process") # for mypy
if self.share_memory: if self.share_memory:
dummy = env_fn() dummy = env_fn()