<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def finish(self, finish_time=None):
 """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() """

        if not self.is_sampled():
            return

        self.end_time = finish_time or time.time()  # no locking
        self.tracer.report_span(self)