On Sat, Aug 2, 2014 at 11:36 AM, Charles R Harris <charlesr.harris@gmail.com> wrote:

On Fri, Aug 1, 2014 at 8:22 PM, David Cournapeau <cournape@gmail.com> wrote:

On Sat, Aug 2, 2014 at 11:17 AM, Charles R Harris <charlesr.harris@gmail.com> wrote:

On Fri, Aug 1, 2014 at 8:01 PM, David Cournapeau <cournape@gmail.com> wrote:
On my machine, if I use inspect instead of _inspect in numpy.compat.__init__, the import time increases ~ 25 % (from 82 ms to 99 ms).

So the hack certainly still make sense, one just need to fix whatever needs fixing (I am still not sure what's broken for the very specific usecase that code was bundled for).

I'm not sure a one time hit of 17 ms is worth fighting for ;) The problems were that both the `string` and `dis` modules were used without importing them.

Don't fix what ain't broken ;)

The 17 ms is not what matters, the % is. People regularly complain about import times, and 25 % increase in import time is significant (the above timing are on my new macbook with SSD and 16 Gb RAM -- figures will easily be 1 order of magnitude worse in common situations with slower computers, slower HDD, NFS, etc...)

Be interesting to compare times. Could you send along the code you used? My machine is similar except it is a desktop with 2 SSDs in raid 0.

I just hacked numpy.lib.__init__ to use inspect instead of _inspect:

diff --git a/numpy/compat/__init__.py b/numpy/compat/__init__.py
index 5b371f5..57f6d7f 100644
--- a/numpy/compat/__init__.py
+++ b/numpy/compat/__init__.py
@@ -10,11 +10,11 @@ extensions, which may be included for the following reasons:
 from __future__ import division, absolute_import, print_function

-from . import _inspect
+import inspect as _inspect
 from . import py3k
-from ._inspect import getargspec, formatargspec
+from inspect import getargspec, formatargspec
 from .py3k import *

 __all__ = []
+__all__.extend(["getargspec", "formatargspec"])