code: def startProcesses(self):
          
          self.process_map = {} # each key is a list of started multiprocesses
          # self.process_avail = {} # count instances
          
          for mvision_class in self.mvision_classes:
              name = mvision_class.name
              tag  = mvision_class.tag
              num  = mvision_class.max_instances        
              if (tag not in self.process_map):
                  self.process_map[tag] = []
                  # self.process_avail[tag] = num
                  for n in range(0, num):
                      p = mvision_class()
                      p.start()
                      self.process_map[tag].append(p)
docs: Create and start python multiprocesses
          
          Starting a multiprocess creates a process fork.
          
          In theory, there should be no problem in first starting the multithreading environment and after that perform forks (only the thread requestin the fork is copied), but in practice, all kinds of weird behaviour arises.
          
          Read all about it in here : http://www.linuxprogrammingblog.com/threads-and-fork-think-twice-before-using-them