/opt/imh-python/lib/python3.9/site-packages/billiard
NameSizeModeActions
dummy/-0755rm
__pycache__/-0755rm
common.py41400644editdlrm
compat.py81480644editdlrm
connection.py326470644editdlrm
context.py131540644editdlrm
einfo.py50640644editdlrm
exceptions.py12720644editdlrm
forkserver.py82820644editdlrm
heap.py91540644editdlrm
managers.py367570644editdlrm
pool.py688290644editdlrm
popen_fork.py25520644editdlrm
popen_forkserver.py17700644editdlrm
popen_spawn_posix.py19220644editdlrm
popen_spawn_win32.py35430644editdlrm
process.py110550644editdlrm
queues.py127390644editdlrm
reduction.py93820644editdlrm
resource_sharer.py52990644editdlrm
semaphore_tracker.py48460644editdlrm
sharedctypes.py66650644editdlrm
spawn.py117400644editdlrm
synchronize.py129620644editdlrm
util.py62590644editdlrm
_ext.py8720644editdlrm
_win.py29190644editdlrm
__init__.py15570644editdlrm
Edit: /opt/imh-python/lib/python3.9/site-packages/billiard/popen_fork.py (2552B)
import os import sys import errno from .common import TERM_SIGNAL __all__ = ['Popen'] # # Start child process using fork # class Popen: method = 'fork' sentinel = None def __init__(self, process_obj): sys.stdout.flush() sys.stderr.flush() self.returncode = None self._launch(process_obj) def duplicate_for_child(self, fd): return fd def poll(self, flag=os.WNOHANG): if self.returncode is None: while True: try: pid, sts = os.waitpid(self.pid, flag) except OSError as e: if e.errno == errno.EINTR: continue # Child process not yet created. See #1731717 # e.errno == errno.ECHILD == 10 return None else: break if pid == self.pid: if os.WIFSIGNALED(sts): self.returncode = -os.WTERMSIG(sts) else: assert os.WIFEXITED(sts) self.returncode = os.WEXITSTATUS(sts) return self.returncode def wait(self, timeout=None): if self.returncode is None: if timeout is not None: from .connection import wait if not wait([self.sentinel], timeout): return None # This shouldn't block if wait() returned successfully. return self.poll(os.WNOHANG if timeout == 0.0 else 0) return self.returncode def terminate(self): if self.returncode is None: try: os.kill(self.pid, TERM_SIGNAL) except OSError as exc: if getattr(exc, 'errno', None) != errno.ESRCH: if self.wait(timeout=0.1) is None: raise def _launch(self, process_obj): code = 1 parent_r, child_w = os.pipe() self.pid = os.fork() if self.pid == 0: try: os.close(parent_r) if 'random' in sys.modules: import random random.seed() code = process_obj._bootstrap() finally: os._exit(code) else: os.close(child_w) self.sentinel = parent_r def close(self): if self.sentinel is not None: try: os.close(self.sentinel) finally: self.sentinel = None