<br><br><div class="gmail_quote">On Wed, Feb 8, 2012 at 11:09, Antoine Pitrou <span dir="ltr">&lt;<a href="mailto:solipsis@pitrou.net">solipsis@pitrou.net</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

Le mercredi 08 février 2012 à 11:01 -0500, Brett Cannon a écrit :<br>
<div><div class="h5">&gt;<br>
&gt;<br>
&gt; On Tue, Feb 7, 2012 at 17:42, Antoine Pitrou &lt;<a href="mailto:solipsis@pitrou.net">solipsis@pitrou.net</a>&gt;<br>
&gt; wrote:<br>
&gt;         On Tue, 7 Feb 2012 17:24:21 -0500<br>
&gt;         Brett Cannon &lt;<a href="mailto:brett@python.org">brett@python.org</a>&gt; wrote:<br>
&gt;         &gt;<br>
&gt;         &gt; IOW you want the sys.modules case fast, which I will never<br>
&gt;         be able to match<br>
&gt;         &gt; compared to C code since that is pure execution with no I/O.<br>
&gt;<br>
&gt;<br>
&gt;         Why wouldn&#39;t continue using C code for that? It&#39;s trivial<br>
&gt;         (just a dict<br>
&gt;         lookup).<br>
&gt;<br>
&gt;<br>
&gt;  Sure, but it&#39;s all the code between the function call and hitting<br>
&gt; sys.modules which would also need to get shoved into the C code. As I<br>
&gt; said, I have not tried to optimize anything yet (and unfortunately a<br>
&gt; lot of the upfront costs are over stupid things like checking if<br>
&gt; __import__ is being called with a string for the module name).<br>
<br>
</div></div>I guess my point was: why is there a function call in that case? The<br>
&quot;import&quot; statement could look up sys.modules directly.<br></blockquote><div><br></div><div>Because people like to do wacky stuff  with their imports and so fully bypassing __import__ would be bad.</div><div> </div>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Or the built-in __import__ could still be written in C, and only defer<br>
to importlib when the module isn&#39;t found in sys.modules.<br>
Practicality beats purity.</blockquote><div><br></div><div> It&#39;s a possibility, although that would require every function call to fetch the PyInterpreterState to get at the cached __import__ (so the proper sys and imp modules are used) and I don&#39;t know how expensive that would be (probably as not as expensive as calling out to Python code but I&#39;m thinking out loud).</div>

</div>