On Mar 1, 10:13 am, Robert Bradshaw <[email protected]>
wrote:
> On Tue, Mar 1, 2011 at 12:48 AM, Johan S. R. Nielsen
> See lazy-import. Doing this for everything may incur significant
> delays the first time a function is called (rather than before the
> prompt) and there are issues with Sage being fragile about the order
> in which some modules are implemented, but yes, it's possible and
> largely implemented.
>
> - Robert
i have played a bit more with lazy_import and looks promising.
On my computer, a cold start of sage is around 10 seconds.
I start a fresh session and look in the global namespace names
belonging to a module containing sage and save this information in a
pickle file
{{{
import pickle
L = copy(globals())
pepinillo = {}
for name in L:
if hasattr(L[name], '__module__') and L[name].__module__:
ambient_module = L[name].__module__
if 'sage' in ambient_module:
if pepinillo.has_key(ambient_module):
pepinillo[ambient_module].append(name)
else:
pepinillo[ambient_module] = [name]
f = open('pepinillo.sobj','w')
pickle.dump(pepinillo, f)
f.close()
}}}
pepinillo.sobj is only 70K
Now, I start an ipython session and load the information of pepinillo
as lazy_objects
{{{
import pickle
L = pickle.load(open('pepinillo.sobj'))
from sage.misc.lazy_import import lazy_import
for ambient_module in L:
for name in L[ambient_module]:
lazy_import(ambient_module, name)
}}}
This is instantaneous less than 0.5 seconds
Now I have more or less a sage session. It is not usable, there is no
preparser. There is no working ZZ, RR or CC so most commands complain.
ZZ = Integer() produces a segfault. var('x') also segfaults.
--
To post to this group, send an email to [email protected]
To unsubscribe from this group, send an email to
[email protected]
For more options, visit this group at http://groups.google.com/group/sage-devel
URL: http://www.sagemath.org