loky/backend/semaphore_tracker.py
def main(fd, verbose=0):
    '''Run semaphore tracker.'''
    # protect the process from ^C and "killall python" etc
    signal.signal(signal.SIGINT, signal.SIG_IGN)
    signal.signal(signal.SIGTERM, signal.SIG_IGN)

    if _HAVE_SIGMASK:
        signal.pthread_sigmask(signal.SIG_UNBLOCK, _IGNORED_SIGNALS)

    for f in (sys.stdin, sys.stdout):
        try:
            f.close()
        except Exception:
            pass

    if verbose:  # pragma: no cover
        sys.stderr.write("Main semaphore tracker is running\n")
        sys.stderr.flush()

    cache = set()
    try:
        # keep track of registered/unregistered semaphores
        with os.fdopen(fd, 'rb') as f:
            for line in f:
                try:
                    cmd, name = line.strip().split(b':')
                    if cmd == b'REGISTER':
                        name = name.decode('ascii')
                        cache.add(name)
                        if verbose:  # pragma: no cover
                            sys.stderr.write("[SemaphoreTracker] register {}\n"
                                             .format(name))
                            sys.stderr.flush()
                    elif cmd == b'UNREGISTER':
                        name = name.decode('ascii')
                        cache.remove(name)
                        if verbose:  # pragma: no cover
                            sys.stderr.write("[SemaphoreTracker] unregister {}"
                                             ": cache({})\n"
                                             .format(name, len(cache)))
                            sys.stderr.flush()
                    elif cmd == b'PROBE':
                        pass
                    else:
                        raise RuntimeError('unrecognized command %r' % cmd)
                except BaseException:
                    try:
                        sys.excepthook(*sys.exc_info())
                    except BaseException:
                        pass
    finally:
        # all processes have terminated; cleanup any remaining semaphores
        if cache:
            try:
                warnings.warn('semaphore_tracker: There appear to be %d '
                              'leaked semaphores to clean up at shutdown' %
                              len(cache))
            except Exception:
                pass
        for name in cache:
            # For some reason the process which created and registered this
            # semaphore has failed to unregister it. Presumably it has died.
            # We therefore unlink it.
            try:
                try:
                    sem_unlink(name)
                    if verbose:  # pragma: no cover
                        sys.stderr.write("[SemaphoreTracker] unlink {}\n"
                                         .format(name))
                        sys.stderr.flush()
                except Exception as e:
                    warnings.warn('semaphore_tracker: %s: %r' % (name, e))
            finally:
                pass

    if verbose:  # pragma: no cover
        sys.stderr.write("semaphore tracker shut down\n")
        sys.stderr.flush()
def main(fd, verbose=0):
    '''Run semaphore tracker.'''
    # protect the process from ^C and "killall python" etc
    signal.signal(signal.SIGINT, signal.SIG_IGN)
    signal.signal(signal.SIGTERM, signal.SIG_IGN)

    if _HAVE_SIGMASK:
        signal.pthread_sigmask(signal.SIG_UNBLOCK, _IGNORED_SIGNALS)

    for f in (sys.stdin, sys.stdout):
        try:
            f.close()
        except Exception:
            pass

    if verbose:  # pragma: no cover
        sys.stderr.write("Main semaphore tracker is running\n")
        sys.stderr.flush()

    cache = set()
    try:
        # keep track of registered/unregistered semaphores
        with os.fdopen(fd, 'rb') as f:
            for line in f:
                try:
                    cmd, name = line.strip().split(b':')
                    if cmd == b'REGISTER':
                        name = name.decode('ascii')
                        cache.add(name)
                        if verbose:  # pragma: no cover
                            sys.stderr.write("[SemaphoreTracker] register {}\n"
                                             .format(name))
                            sys.stderr.flush()
                    elif cmd == b'UNREGISTER':
                        name = name.decode('ascii')
                        cache.remove(name)
                        if verbose:  # pragma: no cover
                            sys.stderr.write("[SemaphoreTracker] unregister {}"
                                             ": cache({})\n"
                                             .format(name, len(cache)))
                            sys.stderr.flush()
                    elif cmd == b'PROBE':
                        pass
                    else:
                        raise RuntimeError('unrecognized command %r' % cmd)
                except BaseException:
                    try:
                        sys.excepthook(*sys.exc_info())
                    except BaseException:
                        pass
    finally:
        # all processes have terminated; cleanup any remaining semaphores
        if cache:
            try:
                warnings.warn('semaphore_tracker: There appear to be %d '
                              'leaked semaphores to clean up at shutdown' %
                              len(cache))
            except Exception:
                pass
        for name in cache:
            # For some reason the process which created and registered this
            # semaphore has failed to unregister it. Presumably it has died.
            # We therefore unlink it.
            try:
                try:
                    sem_unlink(name)
                    if verbose:  # pragma: no cover
                        sys.stderr.write("[SemaphoreTracker] unlink {}\n"
                                         .format(name))
                        sys.stderr.flush()
                except Exception as e:
                    warnings.warn('semaphore_tracker: %s: %r' % (name, e))
            finally:
                pass

    if verbose:  # pragma: no cover
        sys.stderr.write("semaphore tracker shut down\n")
        sys.stderr.flush()
def main ( fd , verbose = 0 ) : # protect the process from ^C and "killall python" etc signal . signal ( signal . SIGINT , signal . SIG_IGN ) signal . signal ( signal . SIGTERM , signal . SIG_IGN ) if _HAVE_SIGMASK : signal . pthread_sigmask ( signal . SIG_UNBLOCK , _IGNORED_SIGNALS ) for f in ( sys . stdin , sys . stdout ) : try : f . close ( ) except Exception : pass if verbose : # pragma: no cover sys . stderr . write ( "Main semaphore tracker is running\n" ) sys . stderr . flush ( ) cache = set ( ) try : # keep track of registered/unregistered semaphores with os . fdopen ( fd , 'rb' ) as f : for line in f : try : cmd , name = line . strip ( ) . split ( b':' ) if cmd == b'REGISTER' : name = name . decode ( 'ascii' ) cache . add ( name ) if verbose : # pragma: no cover sys . stderr . write ( "[SemaphoreTracker] register {}\n" . format ( name ) ) sys . stderr . flush ( ) elif cmd == b'UNREGISTER' : name = name . decode ( 'ascii' ) cache . remove ( name ) if verbose : # pragma: no cover sys . stderr . write ( "[SemaphoreTracker] unregister {}" ": cache({})\n" . format ( name , len ( cache ) ) ) sys . stderr . flush ( ) elif cmd == b'PROBE' : pass else : raise RuntimeError ( 'unrecognized command %r' % cmd ) except BaseException : try : sys . excepthook ( * sys . exc_info ( ) ) except BaseException : pass finally : # all processes have terminated; cleanup any remaining semaphores if cache : try : warnings . warn ( 'semaphore_tracker: There appear to be %d ' 'leaked semaphores to clean up at shutdown' % len ( cache ) ) except Exception : pass for name in cache : # For some reason the process which created and registered this # semaphore has failed to unregister it. Presumably it has died. # We therefore unlink it. try : try : sem_unlink ( name ) if verbose : # pragma: no cover sys . stderr . write ( "[SemaphoreTracker] unlink {}\n" . format ( name ) ) sys . stderr . flush ( ) except Exception as e : warnings . warn ( 'semaphore_tracker: %s: %r' % ( name , e ) ) finally : pass if verbose : # pragma: no cover sys . stderr . write ( "semaphore tracker shut down\n" ) sys . stderr . flush ( )
Run semaphore tracker.
Run semaphore tracker .