← 返回 Day 60 正文

Day 60 · 图解

Day 060 — 阶段项目:高性能计算 · 图解

并发爬虫架构

                    ┌──────────────────┐
                    │   主进程          │
                    │  (Coordinator)   │
                    └────────┬─────────┘
                             │ 分发 URL
              ┌──────────────┼──────────────┐
              ▼              ▼              ▼
       ┌────────────┐ ┌────────────┐ ┌────────────┐
       │ Worker-0   │ │ Worker-1   │ │ Worker-2   │
       │ (进程)     │ │ (进程)     │ │ (进程)     │
       ├────────────┤ ├────────────┤ ├────────────┤
       │ asyncio    │ │ asyncio    │ │ asyncio    │
       │ ├──req-1   │ │ ├──req-4   │ │ ├──req-7   │
       │ ├──req-2   │ │ ├──req-5   │ │ ├──req-8   │
       │ └──req-3   │ │ └──req-6   │ │ └──req-9   │
       └─────┬──────┘ └─────┬──────┘ └─────┬──────┘
             │              │              │
             └──────────────┼──────────────┘
                            ▼
                    ┌──────────────────┐
                    │   结果聚合        │
                    │  (统计 + 存储)    │
                    └──────────────────┘

图像处理管道

输入图像 (H×W×3)
     │
     ▼
┌─────────────────────────────────────────┐
│ Step 1: 灰度转换                         │
│         R,G,B → 0.299R+0.587G+0.114B   │
│         Numba parallel=True 加速        │
└─────────────────┬───────────────────────┘
                  ▼
┌─────────────────────────────────────────┐
│ Step 2: 高斯模糊                        │
│         5×5 高斯核卷积                   │
│         消除噪声,平滑边缘               │
└─────────────────┬───────────────────────┘
                  ▼
┌─────────────────────────────────────────┐
│ Step 3: Sobel 边缘检测                   │
│         Gx = Sobel_x ⊗ image           │
│         Gy = Sobel_y ⊗ image           │
│         G = √(Gx² + Gy²)               │
└─────────────────┬───────────────────────┘
                  ▼
            输出边缘图

Amdahl 定律

加速比 = 1 / ((1-P) + P/N)

P = 可并行比例, N = 处理器数

    加速比
     10x ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ P=100%
         │                          ·····
      8x ─                    ····
         │               ····
      6x ─          ····               P=90%
         │     ····
      4x ─····                         P=70%
         │··
      2x ─·                            P=50%
         │
      1x ──────────────────────────────
         1    2    4    8   16   32  64
                 处理器数 (N)

关键洞察:
• P=50% → 64 个 CPU 最多 2x 加速
• P=90% → 64 个 CPU 最多 8.7x 加速
• P=99% → 64 个 CPU 最多 39x 加速

性能优化策略总结

┌──────────────────────────────────────────┐
│          性能优化三板斧                    │
├──────────────────────────────────────────┤
│                                          │
│  1. 算法优化 (收益最大)                   │
│     O(n²) → O(n log n) → O(n)          │
│                                          │
│  2. 并行化 (多核利用)                     │
│     多进程 → 多线程 → asyncio             │
│     Numba parallel → GPU                 │
│                                          │
│  3. 编译优化 (语言级)                     │
│     Python → Cython → C                  │
│     Numba JIT → LLVM 优化               │
│                                          │
└──────────────────────────────────────────┘