原理是:开启20个thread,每一个thread会从queue中取走一个参数然后做相应的操作,运作一遍后,检查queue中还有没有参数,有的话继续操作,没有的话就退出thread。
简单点就是:queue里面坐满了顾客,我同时开了20个柜台(threading)来处理顾客需求,1个柜台处理完一个顾客后,假如还有顾客在等待就继续处理,没有的话就关闭柜台,直到全部的顾客都处理完毕。
import queue
import threading, time
def rest(que):
while not que.empty():
q_name = que.get()
print(q_name+' > sleep 20 seconds.')
time.sleep(20)
print(q_name+' > wake up.')
q = queue.Queue()
for i in range(1,31):
q.put('dev %d' % i)
max_thread = 20
ts = []
for i in range(max_thread):
t = threading.Thread(target=rest, args=(q,))
t.start()
ts.append(t)
for t in ts:
t.join()