code: def graphcut_subprocesses(graphcut_function, graphcut_arguments, processes = None):
      
      # initialize logger
      logger = Logger.getInstance()
      
      # check and eventually enhance input parameters
      if not processes: processes = multiprocessing.cpu_count()
      if not int == type(processes) or processes <= 0: raise ArgumentError('The number processes can not be zero or negative.')
      
      logger.debug('Executing graph cuts in {} subprocesses.'.format(multiprocessing.cpu_count()))
      
      # creates subprocess pool and execute
      pool = multiprocessing.Pool(processes)
      results = pool.map(graphcut_function, graphcut_arguments)
      
      return results
docs: Executes multiple graph cuts in parallel.
      This can result in a significant speed-up.
      
      Parameters
      ----------
      graphcut_function : function
          The graph cut to use (e.g. `graphcut_stawiaski`).
      graphcut_arguments : tuple
          List of arguments to pass to the respective subprocesses resp. the ``graphcut_function``.
      processes : integer or None
          The number of processes to run simultaneously, if not supplied, will be the same
          as the number of processors.
          
      Returns
      -------
      segmentations : tuple of ndarray
          The graph-cut segmentation results as list of boolean arraya.