From bd7f00cc4c6135b715e425d1ab67a4e175aa77ef Mon Sep 17 00:00:00 2001 From: oesteban Date: Sat, 28 Oct 2017 10:04:39 -0700 Subject: [PATCH] [ENH] Close file descriptors When running large nipype graphs, the open file-descriptors end up provoking OSError 12 (could not allocate memory). --- nipype/interfaces/base.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/nipype/interfaces/base.py b/nipype/interfaces/base.py index f8e845d944..7f586d4923 100644 --- a/nipype/interfaces/base.py +++ b/nipype/interfaces/base.py @@ -1373,7 +1373,9 @@ def run_command(runtime, output=None, timeout=0.01): stderr=stderr, shell=True, cwd=runtime.cwd, - env=env) + env=env, + close_fds=True, + ) result = { 'stdout': [], 'stderr': [], @@ -1421,12 +1423,14 @@ def _process(drain=0): proc.wait() if outfile is not None: stdout.flush() + stdout.close() with open(outfile, 'rb') as ofh: stdoutstr = ofh.read() result['stdout'] = read_stream(stdoutstr, logger=iflogger) if errfile is not None: stderr.flush() + stderr.close() with open(errfile, 'rb') as efh: stderrstr = efh.read() result['stderr'] = read_stream(stderrstr, logger=iflogger)