mirror of
https://github.com/python/cpython.git
synced 2025-11-25 12:44:13 +00:00
concurrent.futures: The *executor manager thread* now catches exceptions when adding an item to the *call queue*. During Python finalization, creating a new thread can now raise RuntimeError. Catch the exception and call terminate_broken() in this case. Add test_python_finalization_error() to test_concurrent_futures. concurrent.futures._ExecutorManagerThread changes: * terminate_broken() no longer calls shutdown_workers() since the call queue is no longer working anymore (read and write ends of the queue pipe are closed). * terminate_broken() now terminates child processes, not only wait until they complete. * _ExecutorManagerThread.terminate_broken() now holds shutdown_lock to prevent race conditons with ProcessPoolExecutor.submit(). multiprocessing.Queue changes: * Add _terminate_broken() method. * _start_thread() sets _thread to None on exception to prevent leaking "dangling threads" even if the thread was not started yet. |
||
|---|---|---|
| .. | ||
| dummy | ||
| __init__.py | ||
| connection.py | ||
| context.py | ||
| forkserver.py | ||
| heap.py | ||
| managers.py | ||
| pool.py | ||
| popen_fork.py | ||
| popen_forkserver.py | ||
| popen_spawn_posix.py | ||
| popen_spawn_win32.py | ||
| process.py | ||
| queues.py | ||
| reduction.py | ||
| resource_sharer.py | ||
| resource_tracker.py | ||
| shared_memory.py | ||
| sharedctypes.py | ||
| spawn.py | ||
| synchronize.py | ||
| util.py | ||