code: def create_and_launch_worker(self, module_name='fork'):
          logger.info("Allocating new '%s' worker...", module_name)
          target = None
          __warned = []
          if module_name == 'fork':
              target = None
          else:
              for module in self.modules_manager.instances:
                  if module.get_name() == module_name:
                      if not module.properties.get('worker_capable', False):
                          raise NotWorkerMod
                      target = module.work
              if target is None:
                  if module_name not in __warned:
                      logger.warning("No target found for %s, NOT creating a worker for it...",
                                     module_name)
                      __warned.append(module_name)
                  return
          queue = Queue()
          worker = Worker(module_name, queue, self.returns_queue, self.processes_by_worker,
                          max_plugins_output_length=self.max_plugins_output_length,
                          target=target, loaded_into=self.name)
          self.workers[worker.get_id()] = worker
          self.q_by_mod[module_name][worker.get_id()] = queue
          worker.start()
          logger.info("Started '%s' worker: %s (pid=%d)",
                      module_name, worker.get_id(), worker.get_pid())