On Sat, Jun 21, 2008 at 15:49, Stéfan van der Walt <[EMAIL PROTECTED]> wrote:
> 2008/6/20 Robert Kern <[EMAIL PROTECTED]>:
>>> Are they initializing different copies of the same thing?
>>
>> No. "import numpy" is essentially the same as the pure Python
>> equivalent; it loads the module and puts it into the namespace.
>> cnp.import_array() loads the module (or reuses the already loaded
>> one), does not put it into any namespace, but then, most importantly,
>> grabs the pointer to the table of function pointers and assigns it to
>> the local void** variable. All of the numpy API is made available to
>> third-party extension modules by #define macros which look up into
>> this table.
>
> Since "import numpy" already sets up the pointer table, is it then
> necessary to use import_array?

None of the third party extension modules have a reference to it.
import_array() grabs the pointer to the start of the pointer table and
assigns it to a void** variable *local* to the extension module. Each
extension module has its own and needs it to be set up via
import_array(). "import numpy" sets up the table, but does not expose
it. import_array() does not set up the table itself, but rather
exposes it to the extension module.

-- 
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless
enigma that is made terrible by our own mad attempt to interpret it as
though it had an underlying truth."
 -- Umberto Eco
_______________________________________________
Numpy-discussion mailing list
Numpy-discussion@scipy.org
http://projects.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to