Here is a modified version which can wrap any PythonCustomClass
----
import weakref
class FinalizeClassWrapper(object):
finalized = 0
class FinalizeWrapper(object):
count = 0
def __init__(self, obj):
self.objRef = weakref.ref(obj)
def __getattr__(self, name):
return getattr(self.objRef(), name)
def __del__(self):
obj = self.objRef()
if obj:
obj.finalize()
FinalizeClassWrapper.finalized += 1
def __init__(self, klass):
self.klass = klass
def __call__(self, *args):
return self.FinalizeWrapper(self.klass(*args))
# sample usage
class _WowParser(lucene.PythonQueryParser):
def __init__(self,defaultField, analyzer):
super(_WowParser, self).__init__(defaultField, analyzer)
WowParser = FinalizeClassWrapper(_WowParser)
----
rgds
Anurag
----- Original Message ----
From: anurag uniyal <[EMAIL PROTECTED]>
To: [email protected]
Sent: Thursday, 17 January, 2008 12:19:40 PM
Subject: [pylucene-dev] Automatic call to finalize
I have a custom parser which is created and used to parse queries at several
places.
Instead of calling finalize each time, I have wrapped my custom parser in a
python class and keep a ref to it, delegating all calls and it works well,
without any weakrefs.
Do you think such behaviour is correct and please tell if it can create any
problems?
---------
import lucene
lucene.initVM(lucene.CLASSPATH, maxheap='1m')
class MyParser(object):
class _MyParser(lucene.PythonQueryParser):
def __init__(self,defaultField, analyzer):
super(MyParser._MyParser, self).__init__(defaultField, analyzer)
def __init__(self,defaultField, analyzer):
self._parser = self._MyParser(defaultField, analyzer)
def __getattr__(self, name):
return getattr(self._parser, name)
def __del__(self):
self._parser.finalize()
analyzer = lucene.StandardAnalyzer()
for i in xrange(100000):
if i%100==0:print i
customParser = MyParser("body", analyzer)
query = customParser.parse("anurag")
---------
Now you can chat without downloading messenger. Go to
http://in.messenger.yahoo.com/webmessengerpromo.php_______________________________________________
pylucene-dev mailing list
[email protected]
http://lists.osafoundation.org/mailman/listinfo/pylucene-dev