LearningSolver: Handle exceptions in parallel_solve

master
Alinson S. Xavier 5 years ago
parent bca6581b0f
commit 3a60deac63

@ -6,6 +6,7 @@ import gzip
import logging import logging
import os import os
import pickle import pickle
import traceback
import tempfile import tempfile
from typing import Optional, List, Any, IO, cast, BinaryIO, Union, Callable, Dict from typing import Optional, List, Any, IO, cast, BinaryIO, Union, Callable, Dict
@ -49,12 +50,17 @@ def _parallel_solve(idx):
output_filename = None output_filename = None
else: else:
output_filename = output_filenames[idx] output_filename = output_filenames[idx]
stats = solver.solve( try:
instances[idx], stats = solver.solve(
output_filename=output_filename, instances[idx],
discard_output=discard_outputs, output_filename=output_filename,
) discard_output=discard_outputs,
return stats, instances[idx] )
return stats, instances[idx]
except Exception as e:
traceback.print_exc()
logger.exception(f"Exception while solving {instances[idx]}. Ignoring.")
return None, None
class LearningSolver: class LearningSolver:
@ -369,6 +375,7 @@ class LearningSolver:
num_cpus=n_jobs, num_cpus=n_jobs,
desc=label, desc=label,
) )
results = [r for r in results if r[0]]
stats = [] stats = []
for (idx, (s, instance)) in enumerate(results): for (idx, (s, instance)) in enumerate(results):
stats.append(s) stats.append(s)

Loading…
Cancel
Save