Spaces:
Runtime error
Runtime error
import os | |
import ray | |
import time | |
from pathlib import Path | |
from construct_brep import construct_brep_from_datanpz | |
# This file still exists just because a UNSPEAKABLE evil class depends on it | |
def inference_batch_postprocess(file_dir: Path ,output_dir: Path, num_cpus: int=4, drop_num: int=2, timeout: int=60): | |
print("Start post-processing") | |
if not ray.is_initialized(): | |
ray.init( | |
num_cpus=num_cpus, | |
) | |
construct_brep_from_datanpz_ray = ray.remote(num_cpus=1, max_retries=0)(construct_brep_from_datanpz) | |
all_folders = sorted(os.listdir(file_dir)) | |
tasks = [ | |
construct_brep_from_datanpz_ray.remote( | |
data_root=file_dir, | |
out_root=output_dir, | |
folder_name=model_number, | |
v_drop_num=1, | |
use_cuda=False, | |
from_scratch=True, | |
is_log=False, | |
is_ray=True, | |
is_optimize_geom=True, | |
isdebug=False, | |
is_save_data=True | |
) | |
for model_number in all_folders | |
] | |
results = [] | |
success_count = 0 | |
while tasks and success_count < 4: | |
done_ids, tasks = ray.wait(tasks, num_returns=1, timeout=60) | |
for done_id in done_ids: | |
try: | |
result = ray.get(done_id) | |
results.append(result) | |
# Delay just a bit to ensure file handles are released | |
time.sleep(0.2) | |
# Check for 'success.txt' in output folders | |
for done_folder in Path(output_dir).iterdir(): | |
output_files = os.listdir(done_folder) | |
if 'success.txt' in output_files: | |
success_count += 1 | |
except Exception as e: | |
print(f"Task failed or timed out: {e}") | |
results.append(None) | |
if success_count >= 4: | |
# Make sure the files are written successfully | |
time.sleep(5.0) | |
break | |
time.sleep(5.0) | |
print("Finished post-processing") | |