python的多线程的一个类,直接可以使用

系统 1447 0
            
              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元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论