From 962bdeab191ee64459caa199209331005797ea7a Mon Sep 17 00:00:00 2001 From: Dave Chevell Date: Sun, 17 Mar 2019 09:28:51 +1100 Subject: [PATCH] bpo-35715: Liberate return value of _process_worker (GH-11514) ProcessPoolExecutor workers will hold the return value of their last task in memory until the next task is received. Since the return value has already been propagated to the parent process's Future (or has been discarded by this point), the object can be safely released. --- Lib/concurrent/futures/process.py | 1 + .../NEWS.d/next/Library/2019-01-11-08-47-58.bpo-35715.Wi3gl0.rst | 1 + 2 files changed, 2 insertions(+) create mode 100644 Misc/NEWS.d/next/Library/2019-01-11-08-47-58.bpo-35715.Wi3gl0.rst diff --git a/Lib/concurrent/futures/process.py b/Lib/concurrent/futures/process.py index ce7d642b098..9b85e7f3376 100644 --- a/Lib/concurrent/futures/process.py +++ b/Lib/concurrent/futures/process.py @@ -235,6 +235,7 @@ def _process_worker(call_queue, result_queue, initializer, initargs): _sendback_result(result_queue, call_item.work_id, exception=exc) else: _sendback_result(result_queue, call_item.work_id, result=r) + del r # Liberate the resource as soon as possible, to avoid holding onto # open files or shared memory that is not needed anymore diff --git a/Misc/NEWS.d/next/Library/2019-01-11-08-47-58.bpo-35715.Wi3gl0.rst b/Misc/NEWS.d/next/Library/2019-01-11-08-47-58.bpo-35715.Wi3gl0.rst new file mode 100644 index 00000000000..0c1ec6b53fd --- /dev/null +++ b/Misc/NEWS.d/next/Library/2019-01-11-08-47-58.bpo-35715.Wi3gl0.rst @@ -0,0 +1 @@ +Librates the return value of a ProcessPoolExecutor _process_worker after it's no longer needed to free memory \ No newline at end of file