MCPcopy Create free account
hub / github.com/ScalingIntelligence/tokasaurus / parallelize

Function parallelize

tokasaurus/benchmarks/utils.py:127–168  ·  view source on GitHub ↗
(
    fn,
    items,
    num_workers: int | None = None,
    processes: bool = True,
    allow_unordered: bool = False,
    desc: str | None = None,
)

Source from the content-addressed store, hash-verified

125
126
127def parallelize(
128 fn,
129 items,
130 num_workers: int | None = None,
131 processes: bool = True,
132 allow_unordered: bool = False,
133 desc: str | None = None,
134):
135 if num_workers is None:
136 num_workers = len(items)
137
138 assert num_workers >= 0
139
140 if num_workers == 0:
141 outs = []
142 for item in tqdm(items, desc=desc):
143 outs.append(fn(item))
144 return outs
145
146 if processes:
147 with Pool(num_workers) as p:
148 if allow_unordered:
149 parallel_fn = p.imap_unordered
150 else:
151 parallel_fn = p.imap
152
153 return list(tqdm(parallel_fn(fn, items), total=len(items), desc=desc))
154 else:
155 with ThreadPoolExecutor(max_workers=num_workers) as executor:
156 futures = [executor.submit(fn, item) for item in items]
157 results = []
158
159 if allow_unordered:
160 iterator = as_completed(futures)
161 else:
162 iterator = futures
163
164 for future in tqdm(iterator, total=len(items), desc=desc):
165 # raise any exceptions immediately
166 results.append(future.result())
167
168 return results
169
170
171def pass_at_k(n, c, k):

Callers 4

mainFunction · 0.90
mainFunction · 0.90
run_evalFunction · 0.90
mainFunction · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected