I may be mistaken, but I believe the <b>kill</b> method is called on the tasklet during garbage collection.<div>You can clean stuff up in that, but you are not allowed to raise any uncaught exceptions.<br><br><div class="gmail_quote">
On Sat, May 19, 2012 at 3:29 PM, Sylvain Prat <span dir="ltr"><<a href="mailto:sylvain.prat@gmail.com" target="_blank">sylvain.prat@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hello,<br>
<br>
I'm wondering how tasklets can clean themselves up when they are<br>
destroyed due to garbage collection (i.e. when they are not in the<br>
runnables and not referenced by any object anymore). Greenlet solves<br>
this problem by raising a GreenletExit exception in the greenlet's run<br>
function when the greenlet is about to die due to garbage collection.<br>
However, in stackless, it seems that no TaskletExit exception is<br>
raised when the tasklet is about to die, so we can't simply use a<br>
try/finally in the tasklet's callable to clean up resources.<br>
<br>
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>
Thank in advance,<br>
Sylvain<br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
Sylvain PRAT<br>
<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>
</font></span></blockquote></div><br></div>