#!/usr/bin/env python3
|
# -*- coding: utf-8 -*-
|
"""CPU 压测:对单条视频重复调用 pipeline,统计耗时。"""
|
import argparse
|
import os
|
import sys
|
import time
|
|
sys.path.insert(0, os.path.join(os.path.dirname(__file__), ".."))
|
|
from app.schemas import AnalyzeRequest
|
from app.pipeline import run_analyze, get_registry
|
|
|
def main():
|
parser = argparse.ArgumentParser()
|
parser.add_argument("video_url", help="可访问的 MP4 URL")
|
parser.add_argument("--media-id", type=int, default=1)
|
parser.add_argument("--duration", type=float, default=0)
|
parser.add_argument("--sample-fps", type=float, default=0.5)
|
parser.add_argument("--no-asr", action="store_true")
|
parser.add_argument("--repeat", type=int, default=1)
|
args = parser.parse_args()
|
|
reg = get_registry()
|
print(f"model_version={reg.version} ready={reg.ready}")
|
if not reg.ready:
|
print("警告: ONNX 模型未就绪,结果可能失败")
|
|
req = AnalyzeRequest(
|
media_id=args.media_id,
|
video_url=args.video_url,
|
sample_fps=args.sample_fps,
|
enable_asr=not args.no_asr,
|
duration_sec=args.duration if args.duration > 0 else None,
|
)
|
times = []
|
for i in range(args.repeat):
|
t0 = time.perf_counter()
|
resp = run_analyze(req)
|
elapsed = time.perf_counter() - t0
|
times.append(elapsed)
|
print(f"run {i+1}: success={resp.success} elapsed={elapsed:.1f}s "
|
f"storefront={resp.storefront.time_sec if resp.storefront else None} "
|
f"handover={resp.handover.time_sec if resp.handover else None} "
|
f"msg={resp.message or ''}")
|
if times:
|
print(f"avg={sum(times)/len(times):.1f}s min={min(times):.1f}s max={max(times):.1f}s")
|
|
|
if __name__ == "__main__":
|
main()
|