Issue #20319: concurrent.futures.wait() can block forever even if Futures have completed
This commit is contained in:
parent
0ba5f0d386
commit
2b754f49a5
|
@ -225,7 +225,8 @@ def as_completed(fs, timeout=None):
|
|||
|
||||
finally:
|
||||
for f in fs:
|
||||
f._waiters.remove(waiter)
|
||||
with f._condition:
|
||||
f._waiters.remove(waiter)
|
||||
|
||||
DoneAndNotDoneFutures = collections.namedtuple(
|
||||
'DoneAndNotDoneFutures', 'done not_done')
|
||||
|
@ -272,7 +273,8 @@ def wait(fs, timeout=None, return_when=ALL_COMPLETED):
|
|||
|
||||
waiter.event.wait(timeout)
|
||||
for f in fs:
|
||||
f._waiters.remove(waiter)
|
||||
with f._condition:
|
||||
f._waiters.remove(waiter)
|
||||
|
||||
done.update(waiter.finished_futures)
|
||||
return DoneAndNotDoneFutures(done, set(fs) - done)
|
||||
|
|
|
@ -69,6 +69,12 @@ Library
|
|||
|
||||
- Issue #17481: inspect.getfullargspec() now uses inspect.signature() API.
|
||||
|
||||
- Issue #15304: concurrent.futures.wait() can block forever even if
|
||||
Futures have completed. Patch by Glenn Langford.
|
||||
|
||||
Fix warning message when `os.chdir()` fails inside
|
||||
`test.support.temp_cwd()`. Patch by Chris Jerdonek.
|
||||
|
||||
IDLE
|
||||
----
|
||||
|
||||
|
|
Loading…
Reference in New Issue