Start the process, essentially forks and calls target function.

def start(self):
        """Start the process, essentially forks and calls target function.""" 
        logger.info("starting process")
        process = os.fork()
        time.sleep(0.01)
        if process != 0:
            logger.debug('starting child watcher')
            self.loop.reset()
            self.child_pid = process
            self.watcher = pyev.Child(self.child_pid, False, self.loop, self._child)
            self.watcher.start()
        else:
            self.loop.reset()
            logger.debug('running main function')
            self.run(*self.args, **self.kwargs) 
            logger.debug('quitting')
            sys.exit(0)