中级
实现加权轮询负载均衡
未完成
中级参考
代码结构已给出,请填写 ____ 处
def solve():
from pyodide.http import open_url
from io import StringIO
service_registry_csv = open_url(____).read()
import pandas as pd
from io import StringIO
registry = pd.read_csv(StringIO(____))
class WeightedRoundRobin:
def __init__(____):
self.instances = [i for i in instances if i['____']=='____']
self.current_weights = [____] * len(____)
def next(____):
if not self.instances: return None
weights = [i['____'] for i in self.instances]
total = sum(____)
self.current_weights = [cw + w for cw, w in zip(____)]
idx = self.current_weights.index(max(____))
self.current_weights[idx] -= total
return self.instances[idx]
user_instances = registry[registry['____']=='____'].to_dict(____)
lb = WeightedRoundRobin(____)
dist = {}
for _ in range(____):
inst = lb.next()
if inst: dist[inst['____']] = dist.get(____)+____
print(____)
for iid, cnt in sorted(dist.items()):
print(____)
user_df = registry[registry['____']=='____']
print(____)
示例
输入
solve()
期望输出
加权轮询分布(10次请求):
user-1: 4次
user-2: 4次
user-3: 2次
权重: {'user-1': 100, 'user-2': 100, 'user-3': 50}
👑
升级 VIP
解锁全部题目,畅通无阻地学习
- ✓ 解锁全部训练包所有题目
- ✓ 查看完整参考代码和提示
- ✓ 浏览器内直接运行 Python 代码
- ✓ 自动批改 + 进度追踪
30天
¥18
1年
¥99
2年
¥158
3年
¥199