`multiprocessing.Pool` is incompatible with `concurrent.interpreters`
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Python
- Estrellas
- 77.2k
- Forks
- 35.9k
- Métricas de merge de PR
- Métricas de PR pendientes
Descripción
Bug report
Bug description:
Trying to create a mutliprocessing.Pool in a sub-interpreter fails due to the use of daemon threads.
How I ran into it: as an experiment, I was trying to run pytest in a sub-interpreter (on its own test suite). One of the tests is using multiprocessing.Pool and fails. (There are other failures, particularly faulthandler and readline incompatibilities, but those are unrelated to this issue).
If mutliprocessing.Pool and concurrent.interpreters are fundamentally incompatible for some reason, perhaps it can be documented.
from concurrent import interpreters
interp = interpreters.create()
interp.exec("""
import multiprocessing
pool = multiprocessing.Pool()
""")
Traceback:
Traceback (most recent call last):
File "x.py", line 5, in <module>
interp.exec("""
~~~~~~~~~~~^^^^
import multiprocessing
^^^^^^^^^^^^^^^^^^^^^^
pool = multiprocessing.Pool()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
""")
^^^^
File "/home/ran/.local/share/uv/python/cpython-3.14.0-linux-x86_64-gnu/lib/python3.14/concurrent/interpreters/__init__.py", line 212, in exec
raise ExecutionFailed(excinfo)
concurrent.interpreters.ExecutionFailed: RuntimeError: daemon threads are disabled in this interpreter
Uncaught in the interpreter:
Traceback (most recent call last):
File "<script>", line 3, in <module>
File "/home/ran/.local/share/uv/python/cpython-3.14.0-linux-x86_64-gnu/lib/python3.14/multiprocessing/context.py", line 119, in Pool
return Pool(processes, initializer, initargs, maxtasksperchild,
context=self.get_context())
File "/home/ran/.local/share/uv/python/cpython-3.14.0-linux-x86_64-gnu/lib/python3.14/multiprocessing/pool.py", line 233, in __init__
self._worker_handler.daemon = True
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ran/.local/share/uv/python/cpython-3.14.0-linux-x86_64-gnu/lib/python3.14/threading.py", line 1207, in daemon
raise RuntimeError('daemon threads are disabled in this interpreter')
RuntimeError: daemon threads are disabled in this interpreter
Link to relevant code:
I'd also note that multiprocessing.Queue uses daemon thread:
CPython versions tested on:
3.14
Operating systems tested on:
Linux
Linked PRs
- gh-140238
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Reproduce el ejemplo en Python 3.14 y, después, inspecciona Lib/multiprocessing/pool.py y Lib/multiprocessing/queues.py en el código del hilo daemon mencionado. Comprueba el PR vinculado gh-140238 y el comportamiento circundante de concurrent.interpreters antes de decidir si el resultado debe ser un cambio de compatibilidad o documentación; se considera terminado cuando la incompatibilidad se haya resuelto o documentado claramente.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- python
- Área
- backend
- Tipo de issue
- Error
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 25/100