1 | initial version |
When you use the "maxima" strategy. you're actually calling maxima_lib -- an instance of maxima/ECL that is running as a library inside the sage process. Upon entering the library, the signal handlers are adjusted to ECL's liking. Your python signal handler is therefore suspended, because it wouldn't be able to execute safely while ECL is in operation (yes, this is very non-thread-safe).
If you want to run the integration in a separate maxima process, use a maxima interface explicitly, e.g.
F=maxima(sqrt(x^2 + 1)*arctan(x)^2)
F.integrate(x)
In general maxima_lib has some distinct advantages, because it can convert expressions between sage and maxima in a more efficient way than just sending characters back and forth (maxima_lib shares memory with sage).