[Stackless] Newbie Stackless Question
jamwt at jamwt.com
Wed Apr 11 19:22:44 CEST 2001
> 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
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
> 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