New submission from Richard Oudkerk <shibt...@gmail.com>:

In version 3.2 and earlier, Process.join() and Connection.poll() treat negative 
timeouts as zero timeouts.  (Thread.join() does the same.)

In the current 3.3 version, they treat negative timeouts as infinite timeouts.  
Also multiprocessing.connection.wait() (new in 3.3) currently treats them as 
infinite on Unix and zero on Windows.

The attached patch fixes the regression with Process.join() and 
Connection.poll().  It also makes wait() treat negative timeouts as zero on 
both Windows and Unix.


It is worth noting that there is a fair amount of inconsistency in the handling 
of negative timeouts in the stdlib in 3.2:

Treat negative as infinite:
    select.select
    select.*.poll
    threading.*.acquire                   (new in 3.2)
    multiprocessing.dummy.*.acquire       (new in 3.2)

Treat negative as zero:
    threading.Thread.join
    threading.(Condition|Event).wait
    multiprocessing.Process.join
    multiprocessing.*.acquire
    multiprocessing.(Condition|Event).wait
    multiprocessing.Connection.poll
    multiprocessing.Queue.(get|put)
    concurrent.futures.Future.result
    concurrent.futures.wait

Treat negative as error:
    queue.Queue.(get|put)
    socket.socket.settimeout

----------
components: Library (Lib)
files: neg-timeout.patch
keywords: patch
messages: 160206
nosy: pitrou, sbt
priority: normal
severity: normal
stage: patch review
status: open
title: multiprocessing treats negative timeouts differently from before
type: behavior
versions: Python 3.3
Added file: http://bugs.python.org/file25497/neg-timeout.patch

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue14753>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to