human
Complete the below
def launcher():

    ''''Starts eye processes. Hosts the IPC Backbone and Logging functions.
    Reacts to notifications:
    ``launcher_process.should_stop``: Stops the launcher process
    ``eye_process.should_start``: Starts the eye process'
    '''
 Give me a the Python code you requested?
assistant
#Here is the Python code you requested.
    def pull_pub(ipc_pub_url, pull):
        ctx = zmq.Context.instance()
        pub = ctx.socket(zmq.PUB)
        pub.connect(ipc_pub_url)
        while True:
            m = pull.recv_multipart()
            pub.send_multipart(m)
    def delay_proxy(ipc_pub_url, ipc_sub_url):
        ctx = zmq.Context.instance()
        sub = zmq_tools.Msg_Receiver(ctx, ipc_sub_url, ('delayed_notify',))
        pub = zmq_tools.Msg_Dispatcher(ctx, ipc_pub_url)
        poller = zmq.Poller()
        poller.register(sub.socket, zmq.POLLIN)
        waiting_notifications = {}
        while True:
            if poller.poll(timeout=250):
                (topic, n) = sub.recv()
                n['_notify_time_'] = (time() + n['delay'])
                waiting_notifications[n['subject']] = n
            for (s, n) in list(waiting_notifications.items()):
                if (n['_notify_time_'] < time()):
                    del n['_notify_time_']
                    del n['delay']
                    del waiting_notifications[s]
                    pub.notify(n)
    def log_loop(ipc_sub_url, log_level_debug):
        import logging
        logger = logging.getLogger()
        if log_level_debug:
            logger.setLevel(logging.DEBUG)
        else:
            logger.setLevel(logging.INFO)
        fh = logging.FileHandler(os.path.join(user_dir, '{}.log'.format(app)), mode='w')
        fh.setFormatter(logging.Formatter('%(asctime)s    -    %(processName)s    -    [%(levelname)s]    %(name)s:    %(message)s'))
        logger.addHandler(fh)
        ch = logging.StreamHandler()
        ch.setFormatter(logging.Formatter('%(processName)s    -    [%(levelname)s]    %(name)s:    %(message)s'))
        logger.addHandler(ch)
        sub = zmq_tools.Msg_Receiver(zmq_ctx, ipc_sub_url, topics=('logging',))
        while True:
            (topic, msg) = sub.recv()
            record = logging.makeLogRecord(msg)
            logger.handle(record)
    timebase = Value(c_double, 0)
    eyes_are_alive = (Value(c_bool, 0), Value(c_bool, 0))
   ...