<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def wait(self, timeout: Optional[float] = None) -> None: """ Makes the current process wait for the signal. If it is closed, it will join the signal's queue. :param timeout: If this parameter is not ``None``, it is taken as a delay at the end of which the process times out, and stops waiting for the :py:class:`Signal`. In such a situation, a :py:class:`Timeout` exception is raised on the process. """

        if _logger is not None:
            self._log(INFO, "wait")
        while not self.is_on:
            self._queue.join(timeout)