[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