diff options
author | Jim Fulton <jim@zope.com> | 2004-07-14 19:11:50 (GMT) |
---|---|---|
committer | Jim Fulton <jim@zope.com> | 2004-07-14 19:11:50 (GMT) |
commit | d15dc06df062fdf0fe8badec2982c6c5e0e28eb0 (patch) | |
tree | e0295c2c22fa7c2e702b37a1d7afd77547a8894f /Lib/dummy_threading.py | |
parent | e827437f45510d9cdd1e7fa561da8084f69ca698 (diff) | |
download | cpython-d15dc06df062fdf0fe8badec2982c6c5e0e28eb0.zip cpython-d15dc06df062fdf0fe8badec2982c6c5e0e28eb0.tar.gz cpython-d15dc06df062fdf0fe8badec2982c6c5e0e28eb0.tar.bz2 |
Implemented thread-local data as proposed on python-dev:
http://mail.python.org/pipermail/python-dev/2004-June/045785.html
Diffstat (limited to 'Lib/dummy_threading.py')
-rw-r--r-- | Lib/dummy_threading.py | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/Lib/dummy_threading.py b/Lib/dummy_threading.py index 2e070aa..4d0b744 100644 --- a/Lib/dummy_threading.py +++ b/Lib/dummy_threading.py @@ -18,6 +18,7 @@ import dummy_thread # Declaring now so as to not have to nest ``try``s to get proper clean-up. holding_thread = False holding_threading = False +holding__threading_local = False try: # Could have checked if ``thread`` was not in sys.modules and gone @@ -37,20 +38,39 @@ try: held_threading = sys_modules['threading'] holding_threading = True del sys_modules['threading'] + + if '_threading_local' in sys_modules: + # If ``_threading_local`` is already imported, might as well prevent + # trying to import it more than needed by saving it if it is + # already imported before deleting it. + held__threading_local = sys_modules['_threading_local'] + holding__threading_local = True + del sys_modules['_threading_local'] + import threading # Need a copy of the code kept somewhere... sys_modules['_dummy_threading'] = sys_modules['threading'] del sys_modules['threading'] + sys_modules['_dummy__threading_local'] = sys_modules['_threading_local'] + del sys_modules['_threading_local'] from _dummy_threading import * from _dummy_threading import __all__ finally: # Put back ``threading`` if we overwrote earlier + if holding_threading: sys_modules['threading'] = held_threading del held_threading del holding_threading + # Put back ``_threading_local`` if we overwrote earlier + + if holding__threading_local: + sys_modules['_threading_local'] = held__threading_local + del held__threading_local + del holding__threading_local + # Put back ``thread`` if we overwrote, else del the entry we made if holding_thread: sys_modules['thread'] = held_thread |