On Mon, 15 Aug 2005, Chris Curvey wrote:

> Is there a better pattern to follow than using a __del__ method?  I just 
> need to be absolutely, positively sure of two things:

An old hack i've seen before is to create a server socket - ie, make a 
socket and bind it to a port:

import socket

class SpecialClass:
        def __init__(self):
                self.sock = socket.socket()
                self.sock.bind(("", 4242))
        def __del__(self):
                self.sock.close()

Something like that, anyway.

Only one socket can be bound to a given port at any time, so the second 
instance of SpecialClass will get an exception from the bind call, and 
will be stillborn. This is a bit of a crufty hack, though - you end up 
with an open port on your machine for no good reason. If you're running on 
unix, you could try using a unix-domain socket instead; i'm not sure what 
the binding semantics of those are, though.

I think Brano's suggestion of using flock is a better solution.

tom

-- 
Gin makes a man mean; let's booze up and riot!
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to