Logging multiprocessing: configure logger dans les workers spawn + compteur de progression

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Jacquin Antoine
2026-05-10 01:30:01 +02:00
parent bf4e42d571
commit df6545460b
2 changed files with 24 additions and 3 deletions

View File

@ -261,15 +261,17 @@ class LidarArchaeoPipeline:
executor.submit(_process_file_standalone, str(laz_file), str(self.input_dir), str(self.output_dir), self.resolution, self.force): laz_file
for laz_file in files
}
for idx, future in enumerate(as_completed(future_to_file), 1):
done = 0
for future in as_completed(future_to_file):
laz_file = future_to_file[future]
done += 1
try:
success = future.result()
results[laz_file.name] = success
status = "" if success else ""
logger.info(f" [{idx}/{len(files)}] {status} {laz_file.name}")
logger.info(f" [{done}/{len(files)}] {status} {laz_file.name}")
except Exception as e:
logger.error(f" [{idx}/{len(files)}] ✗ {laz_file.name}: {e}")
logger.error(f" [{done}/{len(files)}] ✗ {laz_file.name}: {e}")
logger.debug(f" Traceback:", exc_info=True)
results[laz_file.name] = False
else:
@ -319,6 +321,16 @@ def _process_file_standalone(laz_file_str, input_dir, output_dir, resolution, fo
Each worker gets its own temp directory to avoid file conflicts.
"""
# Configure logging in worker process (spawn doesn't inherit parent config)
import logging
import sys
logger = logging.getLogger("lidar")
if not logger.handlers:
handler = logging.StreamHandler(sys.stdout)
handler.setFormatter(logging.Formatter("%(message)s"))
logger.setLevel(logging.INFO)
logger.addHandler(handler)
pipeline = LidarArchaeoPipeline(input_dir, output_dir, resolution=resolution, workers=1, force=force)
basename = Path(laz_file_str).stem
pipeline.temp_dir = pipeline.output_dir / f"temp_{basename}"