[Stackless] Newbie Stackless Question

James Turner jamwt at jamwt.com
Wed Apr 11 19:22:44 CEST 2001

Hi there,

>     I'm working on a new project, and have decided that Stackless is
> probably best for my needs, since ideally I wish to keep memory and CPU use
> to a minimum. Apparently microthreads will do the memory bit; I have no idea
> if its more CPU intensive or not. This is not URGENT, its just a strong
> preference.

In my experiences using uthreads, CPU *and* memory are extremely well 
conserved--there is little overhead switching between microthreads 
because they don't need a stack context switch.  However, I've found
sometimes you have to play tricks with your program to make I/O work
properly--the lib will sometimes exit all threads if they happen
to be all waiting on socket I/O or something at the same time, 
thinking that there is no more work left to do.

>     Here's my question: All of the examples in the uthread homepage show the
> creation of the threads all at once, then a final 'uthread.run()' to
> actually do everything. Almost all of my threads will be loops, and will be
> long-running. Further, I won't know how many to create when I start the
> application.
>     Is there a way to add a thread in the middle of an application's run,
> after we've already done a uthread.run()?

I don't believe so.  You of course have runAndContinue(), but you still
can't add more after you've already launched your microthreads.

This is just from my experience--there are *many* people on this list
that are more knowledgeable than I and may be able to correct me 
here.  If so, please do, because I to would love to be able to do
something similar to thread.start_new_thread(func,(args,)) using

With normal threads, I'd never recommend this, but it may be 
suitable in your case:  If there's a reasonable maximum number of 
threads you need, run that amount.  You say 'dozens of microthreads'; 
well you can easily have hundreds or more, and each one won't 
schedule up until it has finished wait()ing, or poll()ing, or
whatever--you can still hum along efficient with resources with
even hundreds of microthreads waiting to do your bidding.

Hope some of this helps.

Stackless mailing list
Stackless at starship.python.net

More information about the Stackless mailing list