Skip to content

Commit 322e3a1

Browse files
committed
add multiprocessing for building paths list
1 parent 2eaa371 commit 322e3a1

File tree

1 file changed

+12
-4
lines changed

1 file changed

+12
-4
lines changed

nnunetv2/utilities/utils.py

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import re
2222

2323
from nnunetv2.paths import nnUNet_raw
24+
from multiprocessing import Pool
2425

2526

2627
def get_identifiers_from_splitted_dataset_folder(folder: str, file_ending: str):
@@ -33,7 +34,12 @@ def get_identifiers_from_splitted_dataset_folder(folder: str, file_ending: str):
3334
return files
3435

3536

36-
def create_lists_from_splitted_dataset_folder(folder: str, file_ending: str, identifiers: List[str] = None) -> List[
37+
def create_paths_fn(folder, files, file_ending, f):
38+
p = re.compile(re.escape(f) + r"_\d\d\d\d" + re.escape(file_ending))
39+
return [join(folder, i) for i in files if p.fullmatch(i)]
40+
41+
42+
def create_lists_from_splitted_dataset_folder(folder: str, file_ending: str, identifiers: List[str] = None, num_processes: int = 12) -> List[
3743
List[str]]:
3844
"""
3945
does not rely on dataset.json
@@ -42,9 +48,11 @@ def create_lists_from_splitted_dataset_folder(folder: str, file_ending: str, ide
4248
identifiers = get_identifiers_from_splitted_dataset_folder(folder, file_ending)
4349
files = subfiles(folder, suffix=file_ending, join=False, sort=True)
4450
list_of_lists = []
45-
for f in identifiers:
46-
p = re.compile(re.escape(f) + r"_\d\d\d\d" + re.escape(file_ending))
47-
list_of_lists.append([join(folder, i) for i in files if p.fullmatch(i)])
51+
52+
params_list = [(folder, files, file_ending, f) for f in identifiers]
53+
with Pool(processes=num_processes) as pool:
54+
list_of_lists = pool.starmap(create_paths_fn, params_list)
55+
4856
return list_of_lists
4957

5058

0 commit comments

Comments
 (0)