docs: def _array_parallel(fn, cls, genelist, chunksize=250, processes=1, **kwargs):
      """
      Returns an array of genes in `genelist`, using `bins` bins.
  
      `genelist` is a list of pybedtools.Interval objects
  
      Splits `genelist` into pieces of size `chunksize`, creating an array
      for each chunk and merging ret
  
      A chunksize of 25-100 seems to work well on 8 cores.
      """
      pool = multiprocessing.Pool(processes)
      chunks = list(chunker(genelist, chunksize))
      # pool.map can only pass a single argument to the mapped function, so you
      # need this trick for passing multiple arguments; idea from
      # http://stackoverflow.com/questions/5442910/
      #               python-multiprocessing-pool-map-for-multiple-arguments
      #
      results = pool.map(
          func=_array_star,
          iterable=itertools.izip(
              itertools.repeat(fn),
              itertools.repeat(cls),
              chunks,
              itertools.repeat(kwargs)))
      pool.close()
      pool.join()
      return results