<br>
Here&#39;s a pyevent example. It uses socketlibevent to reduce boilerplate, but that&#39;s really not necessary.<br>

____________________________________________________________________________________<br>
<br>
import stackless, event, socketlibevent<br>

<br>

def sleep(sec):<br>

&nbsp;&nbsp;&nbsp; ch = stackless.channel()<br>

&nbsp;&nbsp;&nbsp; def cb(ch):<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ch.send(None)<br>

&nbsp;&nbsp;&nbsp; event.timeout(sec, cb, ch)<br>

&nbsp;&nbsp;&nbsp; ch.receive()<br>

<br>

def test(i):<br>

&nbsp;&nbsp;&nbsp; sleep(i)<br>

&nbsp;&nbsp;&nbsp; print &quot;tasklet:&quot;, i<br>

<br>

for i in [5,4,3,2,1]:<br>

&nbsp;&nbsp;&nbsp; stackless.tasklet(test)(i)<br>

<br>
socketlibevent.runEventLoop()<br>

stackless.run()<br>

_______________________________________________________________________<br><br><div class="gmail_quote">On Sat, Apr 12, 2008 at 8:08 AM, Andrew Francis &lt;<a href="mailto:andrewfr_ice@yahoo.com">andrewfr_ice@yahoo.com</a>&gt; wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Hi Paul:<br>
<div class="Ih2E3d"><br>
<br>
&gt; import stackless as s<br>
&gt;<br>
&gt; results = (5,4,3,2,1)<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; def runMe(i):<br>
&gt;<br>
&gt; &nbsp; &nbsp; time.sleep(i)<br>
&gt;<br>
&gt; &nbsp; &nbsp; print &quot;%d: Hello from TID %d&quot; % (i,t.thread_id)<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; for i in results:<br>
&gt;<br>
&gt; &nbsp; &nbsp; t = s.tasklet(runMe)(i)<br>
&gt;<br>
&gt; &nbsp; &nbsp; s.run<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; As you can see what I had hoped to<br>
&gt; accomplish is to run<br>
&gt; &#39;time.sleep&#39; a total of five times. I would assume<br>
&gt; that if it was<br>
&gt; threading properly it would finish the final thread<br>
&gt; before the first<br>
&gt; thread and supply unique thread IDs for each call.<br>
<br>
</div>There are a few problems with your programme. Also, a<br>
light weight thread in Stackless Python is called a<br>
tasklet. I don&#39;t know where your OS thread reference<br>
is coming from.<br>
<br>
The main problem with your program is that<br>
time.sleep() will block the entire programme for the<br>
given time period. This should have the effect of<br>
running each tasklet roughly after the last finishes.<br>
So the programme will take roughly 15 seconds to<br>
complete rather than 5.<br>
<br>
If you are willing to use Twisted, here is a simple<br>
example that does what you want.<br>
<br>
The essense is as follows -<br>
<br>
1)For each tasklet a channel is created.<br>
2)A Twisted scheduling function, reactor.callLater is<br>
called. After n seconds, the channel&#39;s send method<br>
will be called with a parameter of None<br>
3)The tasklet blocks on the channel<br>
4)After n seconds, when reactor.callLater is<br>
triggered, it will execute myChannel.send()<br>
5)The tasklet will return from the channel.<br>
<br>
#!/usr/bin/env python<br>
&quot;&quot;&quot;<br>
timer.py<br>
Andrew Francis<br>
April 12th, 2008<br>
<br>
&lt;song&gt;Insight - Joy Division&lt;/song&gt;<br>
&quot;&quot;&quot;<br>
<br>
import stackless<br>
import time<br>
from &nbsp; twisted.internet &nbsp; import reactor<br>
from &nbsp; twisted.internet &nbsp; import task<br>
<div class="Ih2E3d"><br>
results = [5,4,3,2,1]<br>
<br>
</div>def runMe(result):<br>
 &nbsp; &nbsp;startTime = time.time()<br>
 &nbsp; &nbsp;print &quot;I am tasklet #&quot;, result<br>
 &nbsp; &nbsp;myChannel = stackless.channel()<br>
 &nbsp; &nbsp;reactor.callLater(result, myChannel.send, None)<br>
 &nbsp; &nbsp;myChannel.receive()<br>
 &nbsp; &nbsp;print &quot;tasklet#&quot;, result, &quot;done&quot;, time.time() -<br>
startTime<br>
<br>
for result in results:<br>
 &nbsp; &nbsp;stackless.tasklet(runMe)(result)<br>
<br>
task.LoopingCall(stackless.schedule).start(.01)<br>
stackless.tasklet(reactor.run)()<br>
stackless.run()<br>
<br>
Cheers,<br>
<font color="#888888">Andrew<br>
</font><div class="WgoR0d"><br>
__________________________________________________<br>
Do You Yahoo!?<br>
Tired of spam? &nbsp;Yahoo! Mail has the best spam protection around<br>
<a href="http://mail.yahoo.com" target="_blank">http://mail.yahoo.com</a><br>
</div><div><div></div><div class="Wj3C7c"><br>
_______________________________________________<br>
Stackless mailing list<br>
<a href="mailto:Stackless@stackless.com">Stackless@stackless.com</a><br>
<a href="http://www.stackless.com/mailman/listinfo/stackless" target="_blank">http://www.stackless.com/mailman/listinfo/stackless</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>Phoenix Sol<br>541-646-8612<br>130 &#39;A&#39; Street,<br>Suite 6<br>Ashland, Oregon<br>97520