On Fri, 24 Oct 2008 12:23:18 -0700, Robert Dailey wrote: > Hi, > > I'm currently using boost::python::import() to import Python modules, so > I'm not sure exactly which Python API function it is calling to import > these files. I posted to the Boost.Python mailing list with this > question and they said I'd probably get a better answer here, so here it > goes... > > If I do the following: > > using namespace boost::python; > import( "__main__" ).attr( "new_global" ) = 40.0f; import( "__main__" > ).attr( "another_global" ) = 100.0f: > > Notice that I'm importing twice. What would be the performance > consequences of this? Do both import operations query the disk for the > module and load it into memory? Will the second call simply reference a > cached version of the module loaded at the first import() call? > > Thanks.
I think it does not reload the module. Running python with verbose mode: [EMAIL PROTECTED]:~$ python -v (snip) >>> import xml import xml # directory /usr/local/lib/python2.6/xml # /usr/local/lib/python2.6/xml/__init__.pyc matches /usr/local/lib/ python2.6/xml/__init__.py import xml # precompiled from /usr/local/lib/python2.6/xml/__init__.pyc >>> import xml >>> It's also mentioned in the docs: (paraphrased to clarify the points) ''' The system maintains a table of modules that have been ... initialized.... When a module name is found..., step (1) is finished. If not, a search for a module ... . When ... found, it is loaded. ''' http://www.python.org/doc/2.5.2/ref/import.html -- http://mail.python.org/mailman/listinfo/python-list