综合实用脚本,高速跑动距离对比?

wen 实用脚本 3

本文目录导读:

综合实用脚本,高速跑动距离对比?

  1. 如果你要的是体育/足球数据分析脚本
  2. 如果你要的是服务器/服务性能脚本(“高速”指高并发)
  3. 需要我进一步细化吗?

“综合实用脚本,高速跑动距离对比”这个需求可以拆成两个方向来理解,下面分别给出可直接用的方案。

如果你要的是体育/足球数据分析脚本

用于统计球员高速跑动距离,并做多人对比。

Python 脚本(基于跟踪数据 CSV)

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# ============ 配置 ============
CSV_PATH = "tracking_data.csv"   # 列: frame, player_id, x, y, timestamp
HIGH_SPEED_THRESHOLD = 5.5       # m/s,高速跑阈值(足球常用 5.5 或 7.0)
FPS = 25                         # 视频帧率
FIELD_SCALE = 0.05               # 像素 -> 米 的换算系数(按实际标定改)
def load_and_clean(path):
    df = pd.read_csv(path)
    df = df.sort_values(["player_id", "timestamp"]).reset_index(drop=True)
    return df
def compute_speed(df):
    """按球员计算瞬时速度 (m/s)"""
    df = df.copy()
    df["dx"] = df.groupby("player_id")["x"].diff()
    df["dy"] = df.groupby("player_id")["y"].diff()
    df["dt"] = df.groupby("player_id")["timestamp"].diff()
    dist = np.sqrt(df["dx"]**2 + df["dy"]**2) * FIELD_SCALE
    df["speed"] = dist / df["dt"]
    df["speed"] = df["speed"].fillna(0)
    return df
def high_speed_distance(df, threshold=HIGH_SPEED_THRESHOLD):
    """统计每个球员的高速跑动距离(米)"""
    df = df.copy()
    df["dt"] = df.groupby("player_id")["timestamp"].diff().fillna(0)
    df["seg_dist"] = df["speed"] * df["dt"]
    hs = df[df["speed"] >= threshold].groupby("player_id")["seg_dist"].sum()
    total = df.groupby("player_id")["seg_dist"].sum()
    result = pd.DataFrame({
        "高速跑距离_m": hs,
        "总跑动距离_m": total,
        "高速占比_%": (hs / total * 100).round(2)
    }).fillna(0).round(2)
    return result.sort_values("高速跑距离_m", ascending=False)
def plot_compare(result, top_n=10):
    data = result.head(top_n)
    fig, ax1 = plt.subplots(figsize=(10, 6))
    x = np.arange(len(data))
    ax1.bar(x - 0.2, data["高速跑距离_m"], 0.4, label="高速跑距离", color="#e74c3c")
    ax1.bar(x + 0.2, data["总跑动距离_m"], 0.4, label="总跑动距离", color="#3498db")
    ax1.set_xticks(x)
    ax1.set_xticklabels(data.index, rotation=45)
    ax1.set_ylabel("距离 (m)")
    ax1.set_title("球员高速跑动距离对比")
    ax1.legend()
    plt.tight_layout()
    plt.savefig("high_speed_compare.png", dpi=150)
    plt.show()
if __name__ == "__main__":
    df = load_and_clean(CSV_PATH)
    df = compute_speed(df)
    result = high_speed_distance(df)
    print(result)
    plot_compare(result)

输出示例:

           高速跑距离_m  总跑动距离_m  高速占比_%
player_id
7              823.45      10234.21      8.05
10             756.12       9876.33      7.66
...

关键参数说明:

参数 含义 常用值
HIGH_SPEED_THRESHOLD 高速跑门槛 5 m/s(足球)/ 5.0(篮球)
FIELD_SCALE 像素→米换算 需根据场地标定
FPS 帧率 25 / 30 / 50

如果你要的是服务器/服务性能脚本(“高速”指高并发)

用于对比不同服务/接口在高负载(高速)下的实际处理距离/吞吐——比如压测对比。

Bash + wrk/ab 对比脚本

#!/bin/bash
# compare_highspeed.sh - 高并发下多接口性能对比
URLS=(
  "http://localhost:8080/api/v1/fast"
  "http://localhost:8080/api/v1/slow"
)
DURATION=30        # 压测时长
CONNECTIONS=200    # 并发连接数
THREADS=8
echo "并发: $CONNECTIONS | 时长: ${DURATION}s"
echo "----------------------------------------"
for url in "${URLS[@]}"; do
    echo ">>> $url"
    wrk -t$THREADS -c$CONNECTIONS -d${DURATION}s --latency "$url" | \
        grep -E "Requests/sec|Latency|Transfer/sec"
    echo ""
done

Python 综合对比脚本(requests + 并发)

import time, statistics, concurrent.futures as cf
import requests, matplotlib.pyplot as plt
TARGETS = {
    "服务A": "http://localhost:8080/api/a",
    "服务B": "http://localhost:8080/api/b",
}
CONCURRENCY = 50
ROUNDS = 200
def bench(url):
    s = requests.Session()
    lat = []
    for _ in range(ROUNDS):
        t0 = time.perf_counter()
        try:
            s.get(url, timeout=5)
            lat.append((time.perf_counter() - t0) * 1000)
        except Exception:
            pass
    return lat
def run(name, url):
    with cf.ThreadPoolExecutor(CONCURRENCY) as ex:
        lat = list(ex.map(lambda _: bench(url), range(CONCURRENCY)))
    flat = [x for sub in lat for x in sub]
    return name, {
        "avg_ms": statistics.mean(flat),
        "p95_ms": sorted(flat)[int(len(flat)*0.95)],
        "p99_ms": sorted(flat)[int(len(flat)*0.99)],
        "rps": len(flat) / (sum(flat)/1000),
    }
if __name__ == "__main__":
    results = [run(n, u) for n, u in TARGETS.items()]
    for n, r in results:
        print(f"{n}: avg={r['avg_ms']:.1f}ms p95={r['p95_ms']:.1f}ms "
              f"p99={r['p99_ms']:.1f}ms rps={r['rps']:.0f}")
    names = [n for n, _ in results]
    p95 = [r["p95_ms"] for _, r in results]
    plt.bar(names, p95, color=["#2ecc71", "#e67e22"])
    plt.ylabel("P95 延迟 (ms)")
    plt.title("高并发下延迟对比")
    plt.savefig("highspeed_compare.png", dpi=150)
    plt.show()

需要我进一步细化吗?

为了给你精准的脚本,请补充:

  1. 场景:体育跑动分析 / 服务器压测 / 其他(如网络传输速率对比)?
  2. 数据来源:CSV 跟踪数据 / GPS / 实时接口 / 日志?
  3. 对比维度:距离、速度、延迟、吞吐、还是综合评分?
  4. 输出形式:终端表格 / 图表 / Excel 报告?

告诉我具体场景,我可以直接给你一份开箱即用的完整脚本。

抱歉,评论功能暂时关闭!