Report final statistics
(self)
| 57 | ) |
| 58 | |
| 59 | def finish(self): |
| 60 | """Report final statistics""" |
| 61 | elapsed = time.time() - self.start_time |
| 62 | rate = self.processed_items / elapsed if elapsed > 0 else 0 |
| 63 | |
| 64 | logger.info( |
| 65 | f"{self.operation_name} completed: {self.processed_items}/{self.total_items} items " |
| 66 | f"in {elapsed:.2f}s ({rate:.2f} items/sec) - {self.errors_encountered} errors" |
| 67 | ) |
| 68 | |
| 69 | class BatchProcessor: |
| 70 | """Generic batch processor with progress tracking and error handling""" |
no outgoing calls
no test coverage detected