Clean up after an event loop finishes the looping over events. This method exists so that custom event loop subclasses (e.g., event loops that integrate a GUI event loop with Python's event loop) have access to all the loop cleanup logic.
(self)
| 659 | events._set_running_loop(self) |
| 660 | |
| 661 | def _run_forever_cleanup(self): |
| 662 | """Clean up after an event loop finishes the looping over events. |
| 663 | |
| 664 | This method exists so that custom event loop subclasses (e.g., event loops |
| 665 | that integrate a GUI event loop with Python's event loop) have access to all the |
| 666 | loop cleanup logic. |
| 667 | """ |
| 668 | self._stopping = False |
| 669 | self._thread_id = None |
| 670 | events._set_running_loop(None) |
| 671 | self._set_coroutine_origin_tracking(False) |
| 672 | # Restore any pre-existing async generator hooks. |
| 673 | if self._old_agen_hooks is not None: |
| 674 | sys.set_asyncgen_hooks(*self._old_agen_hooks) |
| 675 | self._old_agen_hooks = None |
| 676 | |
| 677 | def run_forever(self): |
| 678 | """Run until stop() is called.""" |