[Python-checkins] r74327 - in python/branches/release26-maint: Doc/library/multiprocessing.rst Lib/multiprocessing/queues.py Misc/ACKS Misc/NEWS
jesse.noller
python-checkins at python.org
Thu Aug 6 04:08:10 CEST 2009
Author: jesse.noller
Date: Thu Aug 6 04:08:10 2009
New Revision: 74327
Log:
Merge fix for 4660 back to 26 maint
Modified:
python/branches/release26-maint/ (props changed)
python/branches/release26-maint/Doc/library/multiprocessing.rst
python/branches/release26-maint/Lib/multiprocessing/queues.py
python/branches/release26-maint/Misc/ACKS
python/branches/release26-maint/Misc/NEWS
Modified: python/branches/release26-maint/Doc/library/multiprocessing.rst
==============================================================================
--- python/branches/release26-maint/Doc/library/multiprocessing.rst (original)
+++ python/branches/release26-maint/Doc/library/multiprocessing.rst Thu Aug 6 04:08:10 2009
@@ -1141,11 +1141,6 @@
Run the server in the current process.
- .. method:: from_address(address, authkey)
-
- A class method which creates a manager object referring to a pre-existing
- server process which is using the given address and authentication key.
-
.. method:: get_server()
Returns a :class:`Server` object which represents the actual server under
Modified: python/branches/release26-maint/Lib/multiprocessing/queues.py
==============================================================================
--- python/branches/release26-maint/Lib/multiprocessing/queues.py (original)
+++ python/branches/release26-maint/Lib/multiprocessing/queues.py Thu Aug 6 04:08:10 2009
@@ -282,9 +282,22 @@
Queue.__setstate__(self, state[:-2])
self._cond, self._unfinished_tasks = state[-2:]
- def put(self, item, block=True, timeout=None):
- Queue.put(self, item, block, timeout)
- self._unfinished_tasks.release()
+ def put(self, obj, block=True, timeout=None):
+ assert not self._closed
+ if not self._sem.acquire(block, timeout):
+ raise Full
+
+ self._notempty.acquire()
+ self._cond.acquire()
+ try:
+ if self._thread is None:
+ self._start_thread()
+ self._buffer.append(obj)
+ self._unfinished_tasks.release()
+ self._notempty.notify()
+ finally:
+ self._cond.release()
+ self._notempty.release()
def task_done(self):
self._cond.acquire()
Modified: python/branches/release26-maint/Misc/ACKS
==============================================================================
--- python/branches/release26-maint/Misc/ACKS (original)
+++ python/branches/release26-maint/Misc/ACKS Thu Aug 6 04:08:10 2009
@@ -468,6 +468,7 @@
Lambert Meertens
Bill van Melle
Lucas Prado Melo
+Brian Merrell
Luke Mewburn
Mike Meyer
Steven Miale
Modified: python/branches/release26-maint/Misc/NEWS
==============================================================================
--- python/branches/release26-maint/Misc/NEWS (original)
+++ python/branches/release26-maint/Misc/NEWS Thu Aug 6 04:08:10 2009
@@ -283,6 +283,9 @@
Library
-------
+- Issue #4660: If a multiprocessing.JoinableQueue.put() was preempted, it was
+ possible to get a spurious 'task_done() called too many times' error.
+
- Issue #6595: The Decimal constructor now allows arbitrary Unicode
decimal digits in input, as recommended by the standard. Previously
it was restricted to accepting [0-9].
More information about the Python-checkins
mailing list