how to write thread-safe module ? and pytz
Bryan Olson
fakeaddress at nowhere.org
Wed Aug 10 09:46:38 EDT 2005
nicolas_riesch wrote:
> Does someone know if the module pytz
> (http://sourceforge.net/projects/pytz/) is thread-safe ?
On that, I don't know.
> That's because in the file pytz/tzinfo.py, I see global variables
> _timedelta_cache, _datetime_cache, _ttinfo_cache, which are
> dictionnaries and are used as cache.
> I always thought that you must protect shared data with locks when
> multithreading, but I don't see any lock anywhere in pytz.
Definitely stick with what you always thought.
> However, pytz seems to work well with multiple threads creating various
> timezone objects at the same time.
Buggy threading can seem to work well for along time. It may be
a billion-to-one shot that a thread switch happens at just the
wrong time.
> I don't understand where the trick is, that allows multiple threads to
> access this module without any locking and that all this seems to work
> without any problem...
>
> Does this mean that there is a means to write a module that is
> thread-safe, without importing the threading module and creating locks
> ?
>
> Or have I not understood something ...?
>
> Can someone give me a hint ?
In the current Python implementation, more things are atomic
than the language guarantees to be atomic. Programmers should
not depend on that behavior. Again, I don't know anything about
pytz, but we wouldn't bother with locks and semaphores and such
if we could make the problems go away just by ignoring them.
--
--Bryan
More information about the Python-list
mailing list