https://github.com/python/cpython/commit/156699bca02dd2def844d03e26fc16a831336635 commit: 156699bca02dd2def844d03e26fc16a831336635 branch: main author: Yonatan Goldschmidt <yon.goldschmidt at gmail.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021年05月25日T15:40:23-07:00 summary: bpo-44222: Improve _removeHandlerRef() for a very long _handlerList (GH-26325) The list lookups become a big burden for very long lists. This patch changes the "happy flow" path of 2 lookups into 1 lookup. Automerge-Triggered-By: GH:vsajip files: M Lib/logging/__init__.py diff --git a/Lib/logging/__init__.py b/Lib/logging/__init__.py index 555f598de7a925..7865b71c8737b4 100644 --- a/Lib/logging/__init__.py +++ b/Lib/logging/__init__.py @@ -845,8 +845,9 @@ def _removeHandlerRef(wr): if acquire and release and handlers: acquire() try: - if wr in handlers: - handlers.remove(wr) + handlers.remove(wr) + except ValueError: + pass finally: release()