code: def _iter_withprogress(iterable, progress, log):
      
      before_all = time.time()
      before = before_all
      n = 0
      for i, o in enumerate(iterable):
          yield o
          n = i+1
          if n % progress == 0:
              after = time.time()
              log('%s rows in %.2fs; batch in %.2fs (%d rows/s)'
                  % (n, after-before_all, after-before, progress/(after-before)))
              before = after
      after_all = time.time()
      log('%s rows in %.2fs (%d rows/s)'
          % (n, after_all-before_all, n/(after_all-before_all)))
docs: Utility function to load an array from an iterator, reporting progress
      as we go.