需求:有80台设备,2台服务器,每台服务器只允许同时5个连接。
import queue
import threading, time
def rest(q_c, q_s):
while not q_c.empty(): #检测客户端的序列是否已经为空
q_client = q_c.get() #提取客户端
q_server = q_s.get() #提取可用的服务器
print('%s start to download from %s. Please wait for 30s.' % (q_client, q_server))
time.sleep(30)
print('%s done.' % q_client)
q_s.put(q_server) #下载完成后,把可用的服务器归还序列中
if __name__ == '__main__':
q_client = queue.Queue() #客户端序列
for i in range(1,81):
q_client.put('dev_%02d' % i)
servers = ['ser_1', 'ser_2'] #服务器列表
max_conn = 5 #最大连接数
q_server = queue.Queue() #服务器序列
for ser in servers:
for i in range(max_conn):
q_server.put(ser)
max_thread = len(servers) * max_conn #服务器数x最大连接数=同时运行数量
ts = []
for i in range(max_thread):
t = threading.Thread(target=rest, args=(q_client, q_server))
t.start()
ts.append(t)
for t in ts:
t.join()