From 7fabb4c7bfa97d6a22e13b30df08c5d936714d8e Mon Sep 17 00:00:00 2001 From: "Sergey E. Koposov" Date: Thu, 5 Mar 2026 11:52:49 +0000 Subject: [PATCH] prevent too many open files error in multiprocessing mode --- py/redrock/priors.py | 4 ++-- py/redrock/zfind.py | 3 +++ py/redrock/zscan.py | 3 +++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/py/redrock/priors.py b/py/redrock/priors.py index 1dfb9e5..aa25239 100644 --- a/py/redrock/priors.py +++ b/py/redrock/priors.py @@ -34,11 +34,11 @@ def __init__(self, filename): sigma = h['PRIORS'].data['SIGMA'] self._param = { targetid[i]:{'Z':z[i], 'SIGMA':sigma[i]} for i in range(z.size) } - h.close() - self._type = h['PRIORS'].data['FUNCTION'][0] self._func = getattr(self,self._type) + h.close() + return diff --git a/py/redrock/zfind.py b/py/redrock/zfind.py index 4e04ca2..e2fd2fd 100644 --- a/py/redrock/zfind.py +++ b/py/redrock/zfind.py @@ -395,6 +395,9 @@ def zfind(targets, templates, mp_procs=1, nminima=3, archetypes=None, priors=Non for rs in res: results[rs[0]][ft]['zfit'] = rs[1] + for p in procs: + p.join() + elapsed(start, " Finished in", comm=targets.comm) elapsed(start_findbest, "Finding best redshift", comm=targets.comm) diff --git a/py/redrock/zscan.py b/py/redrock/zscan.py index 47c46f7..51f383f 100644 --- a/py/redrock/zscan.py +++ b/py/redrock/zscan.py @@ -1090,6 +1090,9 @@ def calc_zchi2_targets(targets, templates, mp_procs=1, use_gpu=False): zcoeff[tid] = res[2][j] penalty[tid] = res[3][j] + for p in procs: + p.join() + elapsed(start, " Finished in", comm=targets.comm) for tid in sorted(zchi2.keys()):