[IPython-user] pysh is in CVS

Ville Vainio vivainio at kolumbus.fi
Mon Jun 28 16:31:35 CDT 2004


Fernando Perez wrote:

> Seriously, the current pysh functionality is about as far as I can 
> afford to push it myself.  It works great for me,

Fair enough. I imagine other people might want to help too, esp. after 
you do that codebase cleanup you've been talking about so that the 
modifications don't need to be rewritten for the new architecture. And 
you should really post a PR article on c.l.py about the newfound shell 
functionality :).


> My next item is a multithreaded ipython so I can use matplotlib 
> interactively with a GTK frontend.  This will allow anyone to run 
> GTK/Wx apps from within ipython without the GUI loop blocking ipython 
> itself.  I had a stab at it Saturday evening but I failed, I'll try 
> again over the next few weeks.  Since I've never written a line of 
> multithreaded code, it will take me a bit of effort I'm sure.

Well, in some toolkits at least all the drawing commands need to be done 
from the same thread (since X is single-threaded).  I imagine you 
weren't trying to execute actual GUI code from the ipython thread?

>   my field) that I envision and which we discussed a while back with 
> Ero's Texmacs example.  Since that's the direction _I_ will be pushing 
> things in, fancy shell functionality will have to be done by others.  
> I already broke my

As long as you see shell functionality as desirable (and will accept 
patches to implement that), it's all well and good.

>> Yup, pysh seemed to work alright. One thing that is still noticeably 
>> slower than on bash is changing the directory with "cd" - on a slow 
>> machine you have enough time to type "ls" and blink an eye before 
>> ipython shows
>
> I'm afraid there's not much I can do here.  All the niceties of 
> ipython come at a price: the inner loop is a very complicated piece of 
> code, with string analysis, regexp checks, multiple try/excepts, etc.  
> None of this is

I could almost swear the delay was because of i/o. Executing normal 
statements was instantaneous even on the slow machine, so I wouldn't be 
so quick to blame the inner loop. I took a look at magic_cd, and the 
call to parse_options catches my eye. Apparently parse_options does lots 
of nasty stuff (like starts another python interpreter in a new shell). 
That's a big hit on slow machines. IMO magic_cd should just do trivial 
option parsing completely in python (current process), shell expansion 
is not really needed .

I changed line 1865 of Magic.py (in cvs) to:
            opts,ps = 
self.parse_options(parameter_s,'q',mode='string',use_shell=False)

i.e. I added use_shell = False. It might break something, but boy, does 
it speed it up on my slow machine.




More information about the IPython-user mailing list