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.
This commit is contained in:
parent
bb6ec14479
commit
7824cc05bf
|
@ -27,7 +27,6 @@ __all__ = [
|
||||||
]
|
]
|
||||||
|
|
||||||
import _collections_abc
|
import _collections_abc
|
||||||
import heapq as _heapq
|
|
||||||
import sys as _sys
|
import sys as _sys
|
||||||
|
|
||||||
from itertools import chain as _chain
|
from itertools import chain as _chain
|
||||||
|
@ -608,7 +607,10 @@ class Counter(dict):
|
||||||
# Emulate Bag.sortedByCount from Smalltalk
|
# Emulate Bag.sortedByCount from Smalltalk
|
||||||
if n is None:
|
if n is None:
|
||||||
return sorted(self.items(), key=_itemgetter(1), reverse=True)
|
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):
|
def elements(self):
|
||||||
'''Iterator over elements repeating each as many times as its count.
|
'''Iterator over elements repeating each as many times as its count.
|
||||||
|
|
Loading…
Reference in New Issue