Merged revisions 85731,85735 via svnmerge from

svn+ssh://pythondev@svn.python.org/python/branches/py3k

........
  r85731 | georg.brandl | 2010-10-19 23:07:16 +0200 (Di, 19 Okt 2010) | 1 line

  Be consistent in the spelling of thread-safe(ty).
........
  r85735 | georg.brandl | 2010-10-20 08:50:19 +0200 (Mi, 20 Okt 2010) | 1 line

  Fix r85728: use "" to mean the system default locale, which should work on more systems.
........
This commit is contained in:
Georg Brandl 2010-11-26 07:58:55 +00:00
parent 79f096a7aa
commit 837fbb0d9a
6 changed files with 13 additions and 16 deletions

View File

@ -418,7 +418,7 @@ Thread State and the Global Interpreter Lock
single: interpreter lock single: interpreter lock
single: lock, interpreter single: lock, interpreter
The Python interpreter is not fully thread safe. In order to support The Python interpreter is not fully thread-safe. In order to support
multi-threaded Python programs, there's a global lock, called the :dfn:`global multi-threaded Python programs, there's a global lock, called the :dfn:`global
interpreter lock` or :dfn:`GIL`, that must be held by the current thread before interpreter lock` or :dfn:`GIL`, that must be held by the current thread before
it can safely access Python objects. Without the lock, even the simplest it can safely access Python objects. Without the lock, even the simplest

View File

@ -40,7 +40,7 @@ The :mod:`locale` module defines the following exception and functions:
If *locale* is omitted or ``None``, the current setting for *category* is If *locale* is omitted or ``None``, the current setting for *category* is
returned. returned.
:func:`setlocale` is not thread safe on most systems. Applications typically :func:`setlocale` is not thread-safe on most systems. Applications typically
start with a call of :: start with a call of ::
import locale import locale

View File

@ -216,7 +216,7 @@ However, if you really do need to use some shared data then
The ``'d'`` and ``'i'`` arguments used when creating ``num`` and ``arr`` are The ``'d'`` and ``'i'`` arguments used when creating ``num`` and ``arr`` are
typecodes of the kind used by the :mod:`array` module: ``'d'`` indicates a typecodes of the kind used by the :mod:`array` module: ``'d'`` indicates a
double precision float and ``'i'`` indicates a signed integer. These shared double precision float and ``'i'`` indicates a signed integer. These shared
objects will be process and thread safe. objects will be process and thread-safe.
For more flexibility in using shared memory one can use the For more flexibility in using shared memory one can use the
:mod:`multiprocessing.sharedctypes` module which supports the creation of :mod:`multiprocessing.sharedctypes` module which supports the creation of

View File

@ -120,7 +120,7 @@ The :mod:`runpy` module provides two functions:
Note that, unlike :func:`run_module`, the alterations made to :mod:`sys` Note that, unlike :func:`run_module`, the alterations made to :mod:`sys`
are not optional in this function as these adjustments are essential to are not optional in this function as these adjustments are essential to
allowing the execution of sys.path entries. As the thread safety allowing the execution of sys.path entries. As the thread-safety
limitations still apply, use of this function in threaded code should be limitations still apply, use of this function in threaded code should be
either serialised with the import lock or delegated to a separate process. either serialised with the import lock or delegated to a separate process.

View File

@ -781,9 +781,9 @@ Currently, :class:`Lock`, :class:`RLock`, :class:`Condition`,
Importing in threaded code Importing in threaded code
-------------------------- --------------------------
While the import machinery is thread safe, there are two key While the import machinery is thread-safe, there are two key restrictions on
restrictions on threaded imports due to inherent limitations in the way threaded imports due to inherent limitations in the way that thread-safety is
that thread safety is provided: provided:
* Firstly, other than in the main module, an import should not have the * Firstly, other than in the main module, an import should not have the
side effect of spawning a new thread and then waiting for that thread in side effect of spawning a new thread and then waiting for that thread in

View File

@ -252,16 +252,13 @@ class CalendarTestCase(unittest.TestCase):
def test_localecalendars(self): def test_localecalendars(self):
# ensure that Locale{Text,HTML}Calendar resets the locale properly # ensure that Locale{Text,HTML}Calendar resets the locale properly
# (it is still not thread-safe though) # (it is still not thread-safe though)
try:
def_locale = locale.getdefaultlocale()
except locale.Error:
# cannot determine a default locale -- skip test
return
old_october = calendar.TextCalendar().formatmonthname(2010, 10, 10) old_october = calendar.TextCalendar().formatmonthname(2010, 10, 10)
calendar.LocaleTextCalendar( try:
locale=def_locale).formatmonthname(2010, 10, 10) calendar.LocaleTextCalendar(locale='').formatmonthname(2010, 10, 10)
calendar.LocaleHTMLCalendar( except locale.Error:
locale=def_locale).formatmonthname(2010, 10) # cannot set the system default locale -- skip rest of test
return
calendar.LocaleHTMLCalendar(locale='').formatmonthname(2010, 10)
new_october = calendar.TextCalendar().formatmonthname(2010, 10, 10) new_october = calendar.TextCalendar().formatmonthname(2010, 10, 10)
self.assertEquals(old_october, new_october) self.assertEquals(old_october, new_october)