62 lines
1.5 KiB
Markdown
62 lines
1.5 KiB
Markdown
# Parallel Image Processor
|
|
|
|
Demonstrates how AsyncParallelBatchFlow processes multiple images with multiple filters >8x faster than sequential processing.
|
|
|
|
## Features
|
|
|
|
```mermaid
|
|
graph TD
|
|
subgraph AsyncParallelBatchFlow[Image Processing Flow]
|
|
subgraph AsyncFlow[Per Image-Filter Flow]
|
|
A[Load Image] --> B[Apply Filter]
|
|
B --> C[Save Image]
|
|
end
|
|
end
|
|
```
|
|
|
|
- Processes images with multiple filters in parallel
|
|
- Applies three different filters (grayscale, blur, sepia)
|
|
- Shows significant speed improvement over sequential processing
|
|
- Manages system resources with semaphores
|
|
|
|
## Run It
|
|
|
|
```bash
|
|
pip install -r requirements.txt
|
|
python main.py
|
|
```
|
|
|
|
## Output
|
|
|
|
```=== Processing Images in Parallel ===
|
|
Parallel Image Processor
|
|
------------------------------
|
|
Found 3 images:
|
|
- images/bird.jpg
|
|
- images/cat.jpg
|
|
- images/dog.jpg
|
|
|
|
Running sequential batch flow...
|
|
Processing 3 images with 3 filters...
|
|
Total combinations: 9
|
|
Loading image: images/bird.jpg
|
|
Applying grayscale filter...
|
|
Saved: output/bird_grayscale.jpg
|
|
...etc
|
|
|
|
Timing Results:
|
|
Sequential batch processing: 13.76 seconds
|
|
Parallel batch processing: 1.71 seconds
|
|
Speedup: 8.04x
|
|
|
|
Processing complete! Check the output/ directory for results.
|
|
```
|
|
|
|
## Key Points
|
|
|
|
- **Sequential**: Total time = sum of all item times
|
|
- Good for: Rate-limited APIs, maintaining order
|
|
|
|
- **Parallel**: Total time ≈ longest single item time
|
|
- Good for: I/O-bound tasks, independent operations
|