code: def put(self, fn):
      
      self._inserted += 1
      self._queue.put(fn, block=True)
      return self
docs: Enqueue a task function for processing.
  
      Requires:
        fn: a function object that takes one argument
          that is the interface associated with each
          thread.
  
          e.g. def download(api):
                 results.append(api.download())
  
               self.put(download)
  
      Returns: self