code: def set_cpu_affinity(n, process_ids, actual=not Conf.TESTING):
      
      # check if we have the psutil module
      if not psutil:
          logger.warning('Skipping cpu affinity because psutil was not found.')
          return
      # check if the platform supports cpu_affinity
      if actual and not hasattr(psutil.Process(process_ids[0]), 'cpu_affinity'):
          logger.warning('Faking cpu affinity because it is not supported on this platform')
          actual = False
      # get the available processors
      cpu_list = list(range(psutil.cpu_count()))
      # affinities of 0 or gte cpu_count, equals to no affinity
      if not n or n >= len(cpu_list):
          return
      # spread the workers over the available processors.
      index = 0
      for pid in process_ids:
          affinity = []
          for k in range(n):
              if index == len(cpu_list):
                  index = 0
              affinity.append(cpu_list[index])
              index += 1
          if psutil.pid_exists(pid):
              p = psutil.Process(pid)
              if actual:
                  p.cpu_affinity(affinity)
              logger.info(_('{} will use cpu {}').format(pid, affinity))
docs: Sets the cpu affinity for the supplied processes.
      Requires the optional psutil module.
      :param int n: affinity
      :param list process_ids: a list of pids
      :param bool actual: Test workaround for Travis not supporting cpu affinity