Module: sage.interfaces.sage0
Interface to SAGE
This is an expect interface to another copy of the Sage interpreter.
Module-level Functions
) |
s) |
) |
) |
Class: Sage
Input:
The version of SAGE should be the same as on the local machine, since pickling is used to move data between the two SAGE process.
We create an interface to a copy of Sage. This copy of Sage runs as an external process with its own memory space, etc.
sage: s = Sage()
Create the element 2 in our new copy of Sage, and cubeit.
sage: a = s(2) sage: a^3 8
Create a vector space of dimension
, and compute its generators:
sage: V = s('QQ^4') sage: V.gens() ((1, 0, 0, 0), (0, 1, 0, 0), (0, 0, 1, 0), (0, 0, 0, 1))
Note that V is a not a vector space, it's a wrapper around an object (which happens to be a vector space), in another running instance of Sage.
sage: type(V) <class 'sage.interfaces.sage0.SageElement'> sage: V.parent() Sage sage: g = V.0; g (1, 0, 0, 0) sage: g.parent() Sage
We can still get the actual parent by using the name attribute of g, which is the variable name of the object in the child process.
sage: s('%s.parent()'%g.name()) Vector space of dimension 4 over Rational Field
Note that the memory space is completely different.
sage: x = 10 sage: s('x = 5') 5 sage: x 10 sage: s('x') 5
We can have the child interpreter itself make another child Sage process, so now three copies of Sage are running:
sage: s3 = s('Sage()') sage: a = s3(10) sage: a 10
This
is in a subprocess of a subprocesses of your original Sage.
sage: _ = s.eval('%s.eval("x=8")'%s3.name()) sage: s3('"x"') 8 sage: s('x') 5 sage: x 10
The double quotes are needed because the call to s3 first evaluates
its arguments using the s interpeter, so the call to s3 is passed
s('"x"')
, which is the string "x"
in the s interpreter.
self, [logfile=None], [preparse=True], [python=False], [init_code=None], [server=None], [server_tmpdir=None], [remote_cleaner=True]) |
Functions: console,
cputime,
eval,
get,
new,
preparse,
quit,
set,
trait_names,
version
self, [t=None]) |
Return cputime since this Sage subprocess was started.
sage: sage0.cputime() # random output 1.3530439999999999 sage: sage0('factor(2^157-1)') 852133201 * 60726444167 * 1654058017289 * 2134387368610417 sage: sage0.cputime() # random output 1.6462939999999999
self, line, [strip=True]) |
Send the code x to a second instance of the Sage interpreter and return the output as a string.
This allows you to run two completely independent copies of Sage at the same time in a unified way.
Input:
self, var) |
Get the value of the variable var.
self, var, value) |
Set the variable var to the given value.
Special Functions: __call__,
__init__,
__reduce__,
_contains,
_is_true_string,
_object_class,
_quit_string,
_remote_tmpfile
Class: SageElement
Special Functions: _sage_
self) |
Return local copy of self.
sage: sr = mq.SR(allow_zero_inversions=True) sage: F,s = sr.polynomial_system() sage: F == sage0(F)._sage_() True
Class: SageFunction
Special Functions: __call__,
__repr__
See About this document... for information on suggesting changes.