New submission from to7m <thomashowem...@gmail.com>:

As best I can tell, sometimes when a Listener or Connection is not properly 
initialised, the Client fails to communicate properly with it. Instead of 
raising an exception, the Client hangs.


receiver.py:


from multiprocessing.connection import Listener

while True:
    with Listener(("localhost", 10000), authkey=b"test") as listener:
        with listener.accept() as connection:
            print(connection.recv())


client.py (intended as a stress test):


from multiprocessing.connection import Client

for i in range(1000):
    successfully_sent = False
    while not successfully_sent:
        try:
            with Client(("localhost", 10000), authkey=b"test") as client:
                client.send(i)
        except (ConnectionRefusedError, ConnectionResetError):
            continue
        successfully_sent = True


Also noteworthy: I posted on StackExchange 
(https://stackoverflow.com/questions/65276145/multiprocessing-receive-all-messages-from-multiple-runtimes)
 and it seems that the code there (only 1000 messages) took around an hour to 
run for a Windows user, whereas it would take less than a second to 
successfully run on Linux.

----------
components: IO
files: receive.py
messages: 382945
nosy: to7m
priority: normal
severity: normal
status: open
title: Multiprocessing module hangs on os.read() on Linux
type: behavior
versions: Python 3.9
Added file: https://bugs.python.org/file49675/receive.py

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

Reply via email to