spam-classifier
/
venv
/lib
/python3.11
/site-packages
/joblib
/externals
/loky
/backend
/process.py
############################################################################### | |
# LokyProcess implementation | |
# | |
# authors: Thomas Moreau and Olivier Grisel | |
# | |
# based on multiprocessing/process.py (17/02/2017) | |
# | |
import sys | |
from multiprocessing.context import assert_spawning | |
from multiprocessing.process import BaseProcess | |
class LokyProcess(BaseProcess): | |
_start_method = "loky" | |
def __init__( | |
self, | |
group=None, | |
target=None, | |
name=None, | |
args=(), | |
kwargs={}, | |
daemon=None, | |
init_main_module=False, | |
env=None, | |
): | |
super().__init__( | |
group=group, | |
target=target, | |
name=name, | |
args=args, | |
kwargs=kwargs, | |
daemon=daemon, | |
) | |
self.env = {} if env is None else env | |
self.authkey = self.authkey | |
self.init_main_module = init_main_module | |
def _Popen(process_obj): | |
if sys.platform == "win32": | |
from .popen_loky_win32 import Popen | |
else: | |
from .popen_loky_posix import Popen | |
return Popen(process_obj) | |
class LokyInitMainProcess(LokyProcess): | |
_start_method = "loky_init_main" | |
def __init__( | |
self, | |
group=None, | |
target=None, | |
name=None, | |
args=(), | |
kwargs={}, | |
daemon=None, | |
): | |
super().__init__( | |
group=group, | |
target=target, | |
name=name, | |
args=args, | |
kwargs=kwargs, | |
daemon=daemon, | |
init_main_module=True, | |
) | |
# | |
# We subclass bytes to avoid accidental transmission of auth keys over network | |
# | |
class AuthenticationKey(bytes): | |
def __reduce__(self): | |
try: | |
assert_spawning(self) | |
except RuntimeError: | |
raise TypeError( | |
"Pickling an AuthenticationKey object is " | |
"disallowed for security reasons" | |
) | |
return AuthenticationKey, (bytes(self),) | |