code: def put(self, task, args, kwargs):
          
          if self.num_threads == 0:
              return task(*args, **kwargs)
          if self.queue is None:
              self._spawn()
          self.queue.put((task, args, kwargs))
docs: Add a new item to the queue. An item is a task and the
          arguments needed to call it.
  
          Do not call this directly, use Task.queue/Task.run instead.