[Python-Dev] length_hint (original) (raw)

Benjamin Peterson benjamin at python.org
Fri Apr 3 01:17:08 CEST 2009


2009/4/2 Daniel Stutzbach <daniel at stutzbachenterprises.com>:

Iterators can implement a method called lengthhint that provides a hint to certain internal routines (such as list.extend) so they can operate more efficiently.  As far as I can tell, lengthhint is currently undocumented.  Should it be?

This has been discussed, and no, it is a implementation detail mostly for the optimization of builtin iterators.

If so, are there any constraints on what an iterator should return?  I can think of 3 possible rules, each with advantages and disadvantages: 1. return your best guess 2. return your best guess that you are certain is not higher than the true value 3. return your best guess that you are certain is not lower than the true value Also, I've noticed that if a VERY large hint is returned by the iterator, list.extend will sometimes disregard the hint and try to allocate memory incrementally (correct for rule #1 or #2).  However, in another code path it will throw a MemoryError immediately based on the hint (correct for rule #3).

Perhaps Raymond can shed some light on these.

-- Regards, Benjamin



More information about the Python-Dev mailing list