From: Victor Stinner Date: Wed, 17 Jun 2020 17:10:47 +0000 (+0200) Subject: bpo-41006: collections imports lazily heap (GH-20940) X-Git-Tag: v3.10.0a1~597 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=7824cc05bfe7f8181b21848a52007ddaf5612b9b;p=thirdparty%2FPython%2Fcpython.git bpo-41006: collections imports lazily heap (GH-20940) The collections module now imports lazily the heapq modules in the Counter.most_common() method to speedup Python startup time. --- diff --git a/Lib/collections/__init__.py b/Lib/collections/__init__.py index 42d0ec777c3f..5d75501645fc 100644 --- a/Lib/collections/__init__.py +++ b/Lib/collections/__init__.py @@ -27,7 +27,6 @@ __all__ = [ ] import _collections_abc -import heapq as _heapq import sys as _sys from itertools import chain as _chain @@ -608,7 +607,10 @@ class Counter(dict): # Emulate Bag.sortedByCount from Smalltalk if n is None: return sorted(self.items(), key=_itemgetter(1), reverse=True) - return _heapq.nlargest(n, self.items(), key=_itemgetter(1)) + + # Lazy import to speedup Python startup time + import heapq + return heapq.nlargest(n, self.items(), key=_itemgetter(1)) def elements(self): '''Iterator over elements repeating each as many times as its count.