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

Reply via email to