擅长:python、mysql、java
<p>您可以为每个请求者创建一个bucket,并使用<code>itertools.cycle</code>循环使用,每次都弹出。在</p>
<pre><code>import itertools
all_requests = {
"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],
}
# handle requests:
for requester in itertools.cycle(all_requests):
request, all_requests[requester] = all_requests[requester][0], all_requests[requester][1:]
# Intuitively this seems faster than request = all_requests[requester].pop(0), but I could be wrong
# you should profile this before using it in production code, or see my note below.
response = handle_request(request)
send_response(response)
</code></pre>
<p>请注意,我经常从这个列表的头部提取,所以您应该使用<code>collections.deque</code>来代替它,它具有从头部或尾部快速弹出和推送的功能。在</p>