| 1 | import xapian
|
|---|
| 2 |
|
|---|
| 3 | class TestMatchDecider(xapian.MatchDecider):
|
|---|
| 4 | def __init__(self):
|
|---|
| 5 | super(TestMatchDecider, self).__init__()
|
|---|
| 6 |
|
|---|
| 7 | def __call__(self, doc):
|
|---|
| 8 | return True
|
|---|
| 9 |
|
|---|
| 10 | if __name__ == '__main__':
|
|---|
| 11 | import gc
|
|---|
| 12 | import xapian
|
|---|
| 13 | import weakref
|
|---|
| 14 | db = xapian.WritableDatabase('test', xapian.DB_CREATE_OR_OPEN)
|
|---|
| 15 | doc = xapian.Document()
|
|---|
| 16 | doc.set_data('test')
|
|---|
| 17 | db.replace_document(1, doc)
|
|---|
| 18 | enq = xapian.Enquire(db)
|
|---|
| 19 | enq.set_query(xapian.Query.MatchAll)
|
|---|
| 20 | print "new dec (decider)"
|
|---|
| 21 | dec = TestMatchDecider()
|
|---|
| 22 | decref = weakref.ref(dec)
|
|---|
| 23 | print "decref:", decref()
|
|---|
| 24 | print "removing dec"
|
|---|
| 25 | del dec
|
|---|
| 26 | print "decref:", decref()
|
|---|
| 27 | print "new dec"
|
|---|
| 28 | dec = TestMatchDecider()
|
|---|
| 29 | decref = weakref.ref(dec)
|
|---|
| 30 | print "decref:", decref()
|
|---|
| 31 | print "decref referrer count:", len(gc.get_referrers(decref()))
|
|---|
| 32 | print "type of decref referrer 1:", type(gc.get_referrers(decref())[0])
|
|---|
| 33 | print "decref referrer == locals()?", gc.get_referrers(decref())[0] == locals()
|
|---|
| 34 | mset = enq.get_mset(0, 1, 1, None, dec)
|
|---|
| 35 | print "removing local variables and garbage collecting"
|
|---|
| 36 | del db, doc, enq, dec
|
|---|
| 37 | gc.collect()
|
|---|
| 38 | print "decref:", decref()
|
|---|
| 39 | if decref() != None:
|
|---|
| 40 | print "decref referrer count:", len(gc.get_referrers(decref()))
|
|---|
| 41 | print "decref referrers:", gc.get_referrers(decref())
|
|---|
| 42 | print "type of decref referrer 1", type(gc.get_referrers(decref())[0])
|
|---|
| 43 | print "referrers of decref referrer 1:", gc.get_referrers(gc.get_referrers(decref())[0])
|
|---|
| 44 | #import pdb
|
|---|
| 45 | #pdb.set_trace()
|
|---|
| 46 |
|
|---|