<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 async def shutdown(self):
 """ Shut down this Looper. """

        logger.display("Looper shutting down now...", extra={"cli": False})
        self.running = False
        start = time.perf_counter()
        if not self.runFut.done():
            await self.runFut
        self.stopall()
        logger.display("Looper shut down in {:.3f} seconds.".
                       format(time.perf_counter() - start), extra={"cli": False})
        # Unset signal handlers, bug: https://bugs.python.org/issue23548
        for sig_name in self.signals:
            logger.debug("Unsetting handler for {}".format(sig_name))
            sig_num = getattr(signal, sig_name)
            self.loop.remove_signal_handler(sig_num)