From 5325d5af5785bf02a1fd055ed16ad060ec4e4aa3 Mon Sep 17 00:00:00 2001 From: OpenClaw Bot Date: Fri, 27 Feb 2026 18:24:25 +0800 Subject: [PATCH] fix(conformer): use context manager for Pool to prevent race condition Fixes #19 Replace manual pool.close() with context manager to ensure proper cleanup and prevent race condition in multiprocessing. --- unimol_tools/data/conformer.py | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/unimol_tools/data/conformer.py b/unimol_tools/data/conformer.py index ac24fc3..85a3f9c 100644 --- a/unimol_tools/data/conformer.py +++ b/unimol_tools/data/conformer.py @@ -184,11 +184,10 @@ def transform_mols(self, mols_list): def transform(self, smiles_list): logger.info('Start generating conformers...') if self.multi_process: - pool = Pool(processes=min(8, os.cpu_count())) - results = [ - item for item in tqdm(pool.imap(self.single_process, smiles_list)) - ] - pool.close() + with Pool(processes=min(8, os.cpu_count())) as pool: + results = [ + item for item in tqdm(pool.imap(self.single_process, smiles_list)) + ] else: results = [self.single_process(smiles) for smiles in tqdm(smiles_list)] @@ -459,11 +458,10 @@ def transform_mols(self, mols_list): def transform(self, smiles_list): logger.info('Start generating conformers...') if self.multi_process: - pool = Pool(processes=min(8, os.cpu_count())) - results = [ - item for item in tqdm(pool.imap(self.single_process, smiles_list)) - ] - pool.close() + with Pool(processes=min(8, os.cpu_count())) as pool: + results = [ + item for item in tqdm(pool.imap(self.single_process, smiles_list)) + ] else: results = [self.single_process(smiles) for smiles in tqdm(smiles_list)]