code: def finish(self, finish_time=None):
          
          if not self.is_sampled():
              return
  
          self.end_time = finish_time or time.time()  # no locking
          self.tracer.report_span(self)
docs: Indicate that the work represented by this span has been completed
          or terminated, and is ready to be sent to the Reporter.
  
          If any tags / logs need to be added to the span, it should be done
          before calling finish(), otherwise they may be ignored.
  
          :param finish_time: an explicit Span finish timestamp as a unix
              timestamp per time.time()