回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我正在尝试制作一个客户机-服务器应用程序,在这里客户机注册请求,并在稍后获得响应。在</p>
<p>对于快速插入,我使用<code>defaultdict</code>。在</p>
<pre><code>{
"john": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19],
"ram": [2, 6],
"bruce": [1, 4, 5],
"willam": [7, 1],
}
</code></pre>
<p>这个数据结构唯一易受影响的问题是<code>"john"</code>发出的请求太多,服务器无法公平及时地为其他客户机提供服务。在</p>
<p>所以我认为roundrobin可能会来拯救我,给我一个迭代器,它可以产生这样的客户机-</p>
^{pr2}$
<p>有谁能告诉我如何有效地实现这样一个迭代器?在</p>
<p>编辑:这就是我想到的。有没有人有更好的方法做事?在</p>
<pre><code>def roundrobin(requests):
remaining = set(requests)
index = 0
while remaining:
up_next = set()
for key in remaining:
try:
print(key, requests[key][index])
except IndexError:
continue
up_next.add(key)
remaining = up_next
index += 1
</code></pre>
<p>它产生以下输出</p>
<pre><code>ram 2
john 0
willam 7
bruce 1
bruce 4
ram 6
john 1
willam 1
john 2
bruce 5
john 3
john 4
john 5
john 6
john 7
john 8
john 9
john 10
john 11
john 12
john 13
john 14
john 15
john 16
john 17
john 18
john 19
</code></pre>