On 2 October 2017 at 15:13, Raymond Hettinger <raymond.hettin...@gmail.com> wrote: > >> On Oct 1, 2017, at 7:34 PM, Nathaniel Smith <n...@pobox.com> wrote: >> >> In principle re.compile() itself could be made lazy -- return a >> regular exception object that just holds the string, and then compiles >> and caches it the first time it's used. Might be tricky to do in a >> backwards compatibility way if it moves detection of invalid regexes >> from compile time to use time, but it could be an opt-in flag. > > ISTM that someone writing ``re.compile(pattern)`` is explicitly saying they > want the regex to be pre-compiled. For cache on first-use, we already have > a way to do that with ``re.search(pattern, some string)`` which compiles and > then caches. > > What would be more interesting would be to have a way to save the compiled > regex in a pyc file so that it can be restored on load rather than recomputed. > > Also, we should remind ourselves that making more and more things lazy is a > false optimization unless those things never get used. Otherwise, all we're > doing is ending the timing before all the relevant work is done. If the lazy > object does get used, we've made the actual total execution time worse > (because of the overhead of the lazy evaluation logic).
Right, and I think the approach Inada-san took here is a good example of how to do that effectively (there are a lot of command line scripts and other startup-sensitive operations that will include an "import requests", but *not* directly import any of the other modules in its dependency tree, so "What requests uses" can identify a useful set of avoidable imports. A Flask "Hello world" app could likely provide another such sample, as could some example data analysis notebooks). Cheers, Nick. -- Nick Coghlan | ncogh...@gmail.com | Brisbane, Australia _______________________________________________ Python-Dev mailing list Python-Dev@python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com