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.

classification
Title: AsyncResult.get() only notifies one thread
Type: Stage: resolved
Components: Library (Lib) Versions: Python 2.7
process
Status: closed Resolution: out of date
Dependencies: Superseder:
Assigned To: Nosy List: AlexWithBeard, iritkatriel, xtreak
Priority: normal Keywords:

Created on 2018-08-09 14:17 by AlexWithBeard, last changed 2022-04-11 14:59 by admin. This issue is now closed.

Files
File name Uploaded Description Edit
async_result_demo.py AlexWithBeard, 2018-08-09 14:17 Reproduction script
Messages (2)
msg323323 - (view) Author: Alexander Tsvetkov (AlexWithBeard) Date: 2018-08-09 14:17
If more than one thread is waiting for the multiprocessing.pool.AsyncResult (aka ApplyResult) returned from apply_async, only one thread will be notified once the result arrives.

It happens because AsyncResult._set calls notify upon the result arrival, not notify_all.

threading.Event used in Python 3 uses notify_all.

Reproduction script is attached.
Expected outcome:
1
1
is printed to STDOUT.

Observed outcome:
The script hangs.
msg393437 - (view) Author: Irit Katriel (iritkatriel) * (Python committer) Date: 2021-05-10 21:40
Fixed in Python 3 and Python 2 is past EOL.
History
Date User Action Args
2022-04-11 14:59:04adminsetgithub: 78548
2021-05-10 21:40:29iritkatrielsetstatus: open -> closed

nosy: + iritkatriel
messages: + msg393437

resolution: out of date
stage: resolved
2018-08-09 15:28:00xtreaksetnosy: + xtreak
2018-08-09 14:17:49AlexWithBeardcreate