| 925 | return list(inner()) |
| 926 | |
| 927 | def evaluate_mt(self, data): |
| 928 | def ev(i_elem_ps): |
| 929 | i, (elem, ps) = i_elem_ps |
| 930 | v = ps[0].solid_mt() |
| 931 | if self.settings.debug: |
| 932 | self.write_obj(f"{elem.GlobalId}_{i}.obj", item=v) |
| 933 | return (elem, v) |
| 934 | # yield from map(ev, data.convex_halfspace_trees) |
| 935 | # return |
| 936 | with concurrent.futures.ThreadPoolExecutor(max_workers=4) as executor: |
| 937 | # futures = (executor.submit(ev, el) for el in data.convex_halfspace_trees) |
| 938 | # yield from map(lambda f: f.result(), concurrent.futures.as_completed(futures)) |
| 939 | return executor.map(ev, enumerate(data.convex_halfspace_trees)) |
| 940 | |
| 941 | |
| 942 | @utils.trace |