python利用queue对多线程做并发数量控制

原理是:开启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()

 

你可能感兴趣的:(python,python,多线程)