Fix issue 4660: spurious task_done errors in multiprocessing, remove doc note for from_address

This commit is contained in:
Jesse Noller 2009-08-06 02:05:56 +00:00
parent 175e0bf8ca
commit 8497efeb40
4 changed files with 20 additions and 8 deletions

View File

@ -1153,11 +1153,6 @@ their parent process exits. The manager classes are defined in the
Run the server in the current process. 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() .. method:: get_server()
Returns a :class:`Server` object which represents the actual server under Returns a :class:`Server` object which represents the actual server under

View File

@ -282,9 +282,22 @@ class JoinableQueue(Queue):
Queue.__setstate__(self, state[:-2]) Queue.__setstate__(self, state[:-2])
self._cond, self._unfinished_tasks = state[-2:] self._cond, self._unfinished_tasks = state[-2:]
def put(self, item, block=True, timeout=None): def put(self, obj, block=True, timeout=None):
Queue.put(self, item, block, timeout) assert not self._closed
self._unfinished_tasks.release() 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): def task_done(self):
self._cond.acquire() self._cond.acquire()

View File

@ -485,6 +485,7 @@ Craig McPheeters
Lambert Meertens Lambert Meertens
Bill van Melle Bill van Melle
Lucas Prado Melo Lucas Prado Melo
Brian Merrell
Luke Mewburn Luke Mewburn
Mike Meyer Mike Meyer
Steven Miale Steven Miale

View File

@ -354,6 +354,9 @@ Core and Builtins
Library 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 - Issue #6595: The Decimal constructor now allows arbitrary Unicode
decimal digits in input, as recommended by the standard. Previously decimal digits in input, as recommended by the standard. Previously
it was restricted to accepting [0-9]. it was restricted to accepting [0-9].