[Stackless] uthreads and reference counting

Changjune Kim junaftnoon at yahoo.com
Mon Mar 12 05:50:25 CET 2001


I found quite an interesting point:

If we add a few lines to the original code given by Rinn as:

----------------
import sys, uthread

class A:
    def __del__(self): print "del A() called"

def f(a, i): print i

def starter():
    a = A()
    for i in xrange(5): uthread.new(f, a, i)
    uthread.wait(.1)
    print "ends of starter(), refcount=", sys.getrefcount(a)-1

uthread.new(starter)
for i in range(4): pass
uthread.run()
----------------

This results out "refcount =1" with "del A()..."
However, if I change the magic number for the loop from 4 to 3,5,6,7,8,9 and
so on, the result varies. Sometimes "refcount=4", or "refcount=2", sometimes
with "del A().." or without even when "refcount=1".

Maybe it has something to do with opcodes counting and GC...


_________________________________________________________
Do You Yahoo!?
Get your free @yahoo.com address at http://mail.yahoo.com

_______________________________________________
Stackless mailing list
Stackless at starship.python.net
http://starship.python.net/mailman/listinfo/stackless



More information about the Stackless mailing list