Hi all,<div><br></div><div>I was playing with stackless.py from pypy. In that implementation kill() definitely raises an exception:</div><div><br></div><div><a href="https://bitbucket.org/pypy/pypy/src/68e7e825d598/lib_pypy/stackless.py#cl-68">https://bitbucket.org/pypy/pypy/src/68e7e825d598/lib_pypy/stackless.py#cl-68</a></div>
<div><br></div><div>Just so you know.</div><div><br></div><div>Hervé<br><div class="gmail_quote">On Fri, May 25, 2012 at 5:11 AM, Richard Tew <span dir="ltr"><<a href="mailto:richard.m.tew@gmail.com" target="_blank">richard.m.tew@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">On Sun, May 20, 2012 at 10:29 AM, Sylvain Prat <<a href="mailto:sylvain.prat@gmail.com">sylvain.prat@gmail.com</a>> wrote:<br>

</div><div class="im">> I tried to wrap my tasklet in a parent object which has the same<br>
> lifespan as my tasklet and has a __del__ function for cleaning up, but<br>
> I keep having problems with circular references (the wrapper/parent<br>
> object also provides the callable of the tasklet, i.e. a bound method)<br>
> that make the tasklet/parent object uncollectable (circular references<br>
> : wrapper --> tasklet --> stackless machinery? --> callable stack<br>
> frame (bound method of wrapper) --> wrapper). Same problem when trying<br>
> to inherit from tasklet.<br>
><br>
> So, how can I clean up resources in tasklets? (I'm pretty sure I've<br>
> missed something obvious)<br>
<br>
</div>Hi Sylvain,<br>
<br>
Kristjan having clarified that TaskletExit is definitely off the table<br>
for now, I'd like to make the response I should have when you first<br>
posted.  Fix your circular references and __del__ should be fine.<br>
<br>
What I tend to do is use weak references, where applicable, in order<br>
to ensure that nothing keeps a tasklet alive except where I explicitly<br>
want.  There is nothing internal to Stackless which will keep a<br>
tasklet alive without your implicit direction.  If my tasklets are<br>
kept alive and I detect it, then I use gc.get_referrers(tasklet) to<br>
track down why.<br>
<br>
Cheers,<br>
Richard.<br>
<div class="HOEnZb"><div class="h5"><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>
</div>