| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- ###############################################################################
- # 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
- @staticmethod
- 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),)
|