I have this code in one of my apps:

townCache = {}
def getTown(id):
 if not id in townCache:
   townCache[id] = TownModel.get_by_id(id)
 return townCache[id]

Is this thread safe?  I think it is, because the worst that happens is the 
assignment happens redundantly with the same data.

Random other question: Why don't I have to say "global townCache" at the top of 
that function?

On Jun 29, 2011, at 7:43 AM, Joshua Smith wrote:

> I would assume they are the same as the basic principles of thread safety in 
> any language:
> 
> - Don't rely on global state, because multiple of your functions might be 
> running simultaneously
> 
> This usually isn't very hard to achieve - just pass parameters instead of 
> modifying globals.  The places where it can get tricky are where you really 
> *want* to use global state, such as for an in-memory cache.  Usually the 
> language provides some primitives to ensure that only one thread at a time is 
> updating the cache.  It appears that python gives you thread-safety for a lot 
> of cases:
> 
> http://effbot.org/zone/thread-synchronization.htm
> 
> On Jun 29, 2011, at 1:20 AM, Greg wrote:
> 
>> Hi -
>> 
>> Could anyone familiar with threads explain the basic principals of
>> python thread-safety?
>> 
>> Cheers!
>> Greg.
>> 
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "Google App Engine" group.
>> To post to this group, send email to google-appengine@googlegroups.com.
>> To unsubscribe from this group, send email to 
>> google-appengine+unsubscr...@googlegroups.com.
>> For more options, visit this group at 
>> http://groups.google.com/group/google-appengine?hl=en.
>> 
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Google App Engine" group.
> To post to this group, send email to google-appengine@googlegroups.com.
> To unsubscribe from this group, send email to 
> google-appengine+unsubscr...@googlegroups.com.
> For more options, visit this group at 
> http://groups.google.com/group/google-appengine?hl=en.
> 

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.

Reply via email to