本文目录导读:

“综合实用脚本,高速跑动距离对比”这个需求可以拆成两个方向来理解,下面分别给出可直接用的方案。
如果你要的是体育/足球数据分析脚本
用于统计球员高速跑动距离,并做多人对比。
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()
需要我进一步细化吗?
为了给你精准的脚本,请补充:
- 场景:体育跑动分析 / 服务器压测 / 其他(如网络传输速率对比)?
- 数据来源:CSV 跟踪数据 / GPS / 实时接口 / 日志?
- 对比维度:距离、速度、延迟、吞吐、还是综合评分?
- 输出形式:终端表格 / 图表 / Excel 报告?
告诉我具体场景,我可以直接给你一份开箱即用的完整脚本。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播