On 3 nov 2008, at 00:02, Bill Janssen wrote:

has <[EMAIL PROTECTED]> wrote:

You're leaking memory, which isn't a good thing.

Are you using background threads? PyObjC automatically creates an
autorelease pool for the main thread only; you need to provide
autorelease pools for other threads yourself.

Yes, I am using background threads. I have some functions triggered by actions which make calls on remote services, and so may take arbitrarily
long to execute; I fork worker threads to do that fetch.  I'm using
Python's threading.Thread; should my "target" function look like this?

  def thread_target(*args):
     pool = NSAutoreleasePool.alloc().init()
     try:
         ...
     finally:
         del pool

I don't even think you need the try/finally and the del:
def thread_target(*args):
        pool = NSAutoReleasePool.alloc().init()
        ...

The pool will be discarded when the thread exits, and that's that.

Of course, if you want the pool to be emptied more often you have to add code to do that.


--
Jack Jansen, <[EMAIL PROTECTED]>, http://www.cwi.nl/~jack
If I can't dance I don't want to be part of your revolution -- Emma Goldman


_______________________________________________
Pythonmac-SIG maillist  -  Pythonmac-SIG@python.org
http://mail.python.org/mailman/listinfo/pythonmac-sig

Reply via email to