[issue42409] Interpreter exit blocks waiting for ThreadPoolExecutor.map
George Sakkis
report at bugs.python.org
Thu Nov 19 10:02:33 EST 2020
New submission from George Sakkis <george.sakkis at gmail.com>:
ThreadPoolExecutor.map() prevents interpreter exit if there is a reference to the generator it returns. In the attached script:
- `python threadpool_map.py run1` exits as soon as the exception is raised on the main thread. This is the desired behavior in our case.
- `python threadpool_map.py run2` keeps running until the thread worker processes all queued work items. The only difference from `run1` is that the result of `ThreadPoolExecutor.map()` is assigned to a variable.
- `python threadpool_map.py run3` has a `finally` block that shuts down the executor without waiting. Still the worker thread keeps running even after the shutdown.
Initially it seemed like https://bugs.python.org/issue36780 but there is no change in the behavior after commenting out the `atexit.register(_python_exit)` call (for the `run2` case at least).
----------
components: Library (Lib)
files: threadpool_map.py
messages: 381433
nosy: gsakkis
priority: normal
severity: normal
status: open
title: Interpreter exit blocks waiting for ThreadPoolExecutor.map
type: behavior
versions: Python 3.6, Python 3.7, Python 3.8
Added file: https://bugs.python.org/file49608/threadpool_map.py
_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue42409>
_______________________________________
More information about the Python-bugs-list
mailing list