mirror of https://github.com/python/cpython
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:
parent
79f096a7aa
commit
837fbb0d9a
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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.
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue