Locking access to all data members

Diez B. Roggisch deets at nospam.web.de
Sun Jan 28 09:08:12 EST 2007


gooli schrieb:
> I have a class with a lot of attributes whose objects are accessed 
> from multiple threads. I would like to synchronize the access to all 
> the attributes, i.e. acquire a lock, return the value, release the 
> lock (in a finally clause).
> 
> Is there a way to do that without turning each attribute into a 
> property and manually wrapping each property with the locking code?
> 
> How about classes bound with SQLAlchemy? Is it possible to do that for 
> those too?
> 
> Example of a class I would like to wrap:
> 
> class Job(object):
>     def __init__(self, itemType):
>         self.id = self.idSequence
>         self.itemType = itemType
>         self.status = "waiting"
>         self.createDate = None
>         self.hostName = None
>         self.progress = 0
>         self.items = []
> 

You can use a metaclass or decorators to put the locking code in place 
for all methods. I'm not sure though if that interferes with SQLAlchemy.


Diez



More information about the Python-list mailing list