multiprocessing async .get() hangs if the pool is terminated
Offen
Dieses Issue hat noch niemand übernommen.
stdlib
topic-multiprocessing
type-bug
- Vorherrschende Sprache
- Python
- Sterne
- 77.2k
- Forks
- 35.9k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
Bug report
Bug description:
MWE
Steps to reproduce:
import multiprocessing
from time import sleep
with multiprocessing.Pool() as p:
result = p.apply_async(sleep, (1,))
result.get()
Expected behavior:
Either:
- result is returned. (
Pool().__exit__waits for every async task to finish); or - some kind of exception is raised when
.get()is called outsidewith Pool()
Comments
This is the same as #79659. That was marked as completed in 2021. However it seems the issue is still present.
CPython versions tested on:
3.12, 3.13, 3.14
Operating systems tested on:
Linux
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginnen Sie damit, das bereitgestellte MWE auszuführen und die Interaktion zwischen Pool.exit und dem Aufruf .get() des asynchronen Ergebnisses nachzuvollziehen, nachdem der Pool beendet wurde. Vergleichen Sie das Verhalten mit Issue #79659 und fügen Sie Tests für das dokumentierte erwartete Ergebnis hinzu: Abschluss oder eine Ausnahme statt eines Hängers.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- operating-systems
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 42/100