This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author takluyver
Recipients davin, kormang, myles.steinhauser, pitrou, shnizzedy, takluyver
Date 2021-11-24.19:34:13
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1637782453.4.0.860511349058.issue43805@roundup.psfhosted.org>
In-reply-to
Content
I think this is expected. The queue itself doesn't know that one particular process is meant to put data into it. It just knows that there's no data to get, so .get() blocks as the docs say it should.

This doesn't apply to issue22393, because the pool knows about its worker processes, so if one dies before completing a task, it can know something is wrong.

You could add a method to 'half close' a queue, so it can only be used for receiving, but not sending. If you called this in the parent process after starting the child, then if the child died, the queue would know that nothing could ever put data into it, and .get() could error. The channels API in Trio allows this, and it's the same idea I've just described at the OS level in issue43806.
History
Date User Action Args
2021-11-24 19:34:13takluyversetrecipients: + takluyver, pitrou, davin, kormang, shnizzedy, myles.steinhauser
2021-11-24 19:34:13takluyversetmessageid: <1637782453.4.0.860511349058.issue43805@roundup.psfhosted.org>
2021-11-24 19:34:13takluyverlinkissue43805 messages
2021-11-24 19:34:13takluyvercreate