第 7 个连接给谁
按模型,3 个 worker 时 assign(7, 3) 交回几?
贯穿本节的并发模型(判题机 0.25 核有 GIL、答案不靠时序,这是它的确定模型,见 spine.py):高并发服务器搭起来后要选架构、加锁护状态、连接池/队列、压测、测吞吐延迟、定位竞争。
并发服务器:assign(i, workers)=第 i 个连接轮询给哪个 worker、count_done=处理完几条、all_served=都处理完没、idle_workers=还空几个。
def assign(i, workers):
"""第 i 个连接轮询分给哪个 worker。"""
return i % workers
def count_done(log):
"""处理日志里有几条是 done。"""
return sum(1 for x in log if x == "done")
def all_served(reqs, done):
"""请求都处理完了吗。"""
return done >= reqs
def idle_workers(busy, workers):
"""还有几个 worker 空着。"""
return workers - busy
print(assign(7, 3))
全部评论