code: def map(cls, function, items, multiprocess=False, file=None):
          
  
          results = []
  
          if file is None:
              file = _get_stdout()
  
          with cls(len(items), file=file) as bar:
              step_size = max(200, bar._bar_length)
              steps = max(int(float(len(items)) / step_size), 1)
              if not multiprocess:
                  for i, item in enumerate(items):
                      results.append(function(item))
                      if (i % steps) == 0:
                          bar.update(i)
              else:
                  p = multiprocessing.Pool()
                  for i, result in enumerate(
                      p.imap_unordered(function, items, steps)):
                      bar.update(i)
                      results.append(result)
                  p.close()
                  p.join()
  
          return results
docs: Does a `map` operation while displaying a progress bar with
          percentage complete.
  
          ::
  
              def work(i):
                  print(i)
  
              ProgressBar.map(work, range(50))
  
          Parameters
          ----------
          function : function
              Function to call for each step
  
          items : sequence
              Sequence where each element is a tuple of arguments to pass to
              *function*.
  
          multiprocess : bool, optional
              If `True`, use the `multiprocessing` module to distribute each
              task to a different processor core.
  
          file : writeable file-like object, optional
              The file to write the progress bar to.  Defaults to
              `sys.stdout`.  If `file` is not a tty (as determined by
              calling its `isatty` member, if any), the scrollbar will
              be completely silent.