import threading
import queue
import time
'''
queue.qsize() 返回隊列的大小
queue.empty() 如果隊列為空,返回True,反之False
queue.full() 如果隊列滿了,返回True,反之False
queue.full 與 maxsize 大小對應
queue.get([block[, timeout]])獲取隊列,timeout等待時間
queue.get_nowait() 相當queue.get(False)
queue.put(item) 寫入隊列,timeout等待時間
queue.put_nowait(item) 相當queue.put(item, False)
queue.task_done() 在完成一項工作之后,queue.task_done()函數向任務已經完成的隊列發送一個信號
'''
class CustomThread(threading.Thread):
def __init__(self, queue):
threading.Thread.__init__(self)
self.__queue = queue
def run(self):
q_method, kwargs = self.__queue.get()
q_method(**kwargs)
self.__queue.task_done()
def start_thread(request_queue):
# 啟動線程
for i in range(request_queue.maxsize):
t = CustomThread(request_queue)
t.setDaemon(True)
t.start()
def test(id):
print("test start by id:{}".format(id))
time.sleep(1)
print("test end by id:{}\n".format(id))
if __name__ == '__main__':
QUEUE_SIZE = 5
test_queue = queue.Queue(QUEUE_SIZE)
#啟動線程
start_thread(test_queue)
# 啟動線程
# for i in range(test_queue.maxsize):
# t = CustomThread(test_queue)
# t.setDaemon(True)
# t.start()
for i in range(5):
test_queue.put((test, {"id":i}))
#等待所有線程執行完
test_queue.join()
print("進程結束!")
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
