亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術(shù)文章
文章詳情頁

python中threading和queue庫實(shí)現(xiàn)多線程編程

瀏覽:69日期:2022-06-28 11:01:13
摘要

本文主要介紹了利用python的 threading和queue庫實(shí)現(xiàn)多線程編程,并封裝為一個(gè)類,方便讀者嵌入自己的業(yè)務(wù)邏輯。最后以機(jī)器學(xué)習(xí)的一個(gè)超參數(shù)選擇為例進(jìn)行演示。

多線程實(shí)現(xiàn)邏輯封裝

實(shí)例化該類后,在.object_func函數(shù)中加入自己的業(yè)務(wù)邏輯,再調(diào)用.run方法即可。

# -*- coding: utf-8 -*-# @Time : 2021/2/4 14:36# @Author : CyrusMay WJ# @FileName: run.py# @Software: PyCharm# @Blog :https://blog.csdn.net/Cyrus_Mayimport queueimport threadingclass CyrusThread(object): def __init__(self,num_thread = 10,logger=None): ''':param num_thread: 線程數(shù) :param logger: 日志對象 ''' self.num_thread = num_thread self.logger = logger def object_func(self,args_queue,max_q): while 1: try:arg = args_queue.get_nowait()step = args_queue.qsize()self.logger.info('progress:{}{}'.format(max_q,step)) except:self.logger.info('no more arg for args_queue!')break'''此處加入自己的業(yè)務(wù)邏輯代碼''' def run(self,args): args_queue = queue.Queue() for value in args: args_queue.put(value) threads = [] for i in range(self.num_thread): threads.append(threading.Thread(target=self.object_func,args = args_queue)) for t in threads: t.start() for t in threads: t.join()

模型參數(shù)選擇實(shí)例

# -*- coding: utf-8 -*-# @Time : 2021/2/4 14:36# @Author : CyrusMay WJ# @FileName: run.py# @Software: PyCharm# @Blog :https://blog.csdn.net/Cyrus_Mayimport queueimport threadingimport numpy as npfrom sklearn.datasets import load_bostonfrom sklearn.svm import SVRimport loggingimport sysclass CyrusThread(object): def __init__(self,num_thread = 10,logger=None): ''' :param num_thread: 線程數(shù) :param logger: 日志對象 ''' self.num_thread = num_thread self.logger = logger def object_func(self,args_queue,max_q): while 1: try:arg = args_queue.get_nowait()step = args_queue.qsize()self.logger.info('progress:{}{}'.format(max_q,max_q-step)) except:self.logger.info('no more arg for args_queue!')break # 業(yè)務(wù)代碼 C, epsilon, gamma = arg[0], arg[1], arg[2] svr_model = SVR(C=C, epsilon=epsilon, gamma=gamma) x, y = load_boston()['data'], load_boston()['target'] svr_model.fit(x, y) self.logger.info('score:{}'.format(svr_model.score(x,y))) def run(self,args): args_queue = queue.Queue() max_q = 0 for value in args: args_queue.put(value) max_q += 1 threads = [] for i in range(self.num_thread): threads.append(threading.Thread(target=self.object_func,args = (args_queue,max_q))) for t in threads: t.start() for t in threads: t.join()# 創(chuàng)建日志對象logger = logging.getLogger()logger.setLevel(logging.INFO)screen_handler = logging.StreamHandler(sys.stdout)screen_handler.setLevel(logging.INFO)formatter = logging.Formatter(’%(asctime)s - %(module)s.%(funcName)s:%(lineno)d - %(levelname)s - %(message)s’)screen_handler.setFormatter(formatter)logger.addHandler(screen_handler)# 創(chuàng)建需要調(diào)整參數(shù)的集合args = []for C in [i for i in np.arange(0.01,1,0.01)]: for epsilon in [i for i in np.arange(0.001,1,0.01)] + [i for i in range(1,10,1)]: for gamma in [i for i in np.arange(0.001,1,0.01)] + [i for i in range(1,10,1)]: args.append([C,epsilon,gamma])# 創(chuàng)建多線程工具threading_tool = CyrusThread(num_thread=20,logger=logger)threading_tool.run(args)

運(yùn)行結(jié)果

2021-02-04 20:52:22,824 - run.object_func:31 - INFO - progress:117621912021-02-04 20:52:22,824 - run.object_func:31 - INFO - progress:117621922021-02-04 20:52:22,826 - run.object_func:31 - INFO - progress:117621932021-02-04 20:52:22,833 - run.object_func:31 - INFO - progress:117621942021-02-04 20:52:22,837 - run.object_func:31 - INFO - progress:117621952021-02-04 20:52:22,838 - run.object_func:31 - INFO - progress:117621962021-02-04 20:52:22,841 - run.object_func:31 - INFO - progress:117621972021-02-04 20:52:22,862 - run.object_func:31 - INFO - progress:117621982021-02-04 20:52:22,873 - run.object_func:31 - INFO - progress:117621992021-02-04 20:52:22,884 - run.object_func:31 - INFO - progress:1176219102021-02-04 20:52:22,885 - run.object_func:31 - INFO - progress:1176219112021-02-04 20:52:22,897 - run.object_func:31 - INFO - progress:1176219122021-02-04 20:52:22,900 - run.object_func:31 - INFO - progress:1176219132021-02-04 20:52:22,904 - run.object_func:31 - INFO - progress:1176219142021-02-04 20:52:22,912 - run.object_func:31 - INFO - progress:1176219152021-02-04 20:52:22,920 - run.object_func:31 - INFO - progress:1176219162021-02-04 20:52:22,920 - run.object_func:39 - INFO - score:-0.016742839142878552021-02-04 20:52:22,929 - run.object_func:31 - INFO - progress:1176219172021-02-04 20:52:22,932 - run.object_func:39 - INFO - score:-0.0079923541709525652021-02-04 20:52:22,932 - run.object_func:31 - INFO - progress:1176219182021-02-04 20:52:22,945 - run.object_func:31 - INFO - progress:1176219192021-02-04 20:52:22,954 - run.object_func:31 - INFO - progress:1176219202021-02-04 20:52:22,978 - run.object_func:31 - INFO - progress:1176219212021-02-04 20:52:22,984 - run.object_func:39 - INFO - score:-0.0187699348072465362021-02-04 20:52:22,985 - run.object_func:31 - INFO - progress:117621922

到此這篇關(guān)于python中threading和queue庫實(shí)現(xiàn)多線程編程的文章就介紹到這了,更多相關(guān)python 多線程編程內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 成人影院免费www | 欧美在线观看一区二区三区 | 涩涩涩久久 | 精品一区二区在线观看 | 欧美h片在线观看 | 特级毛片a级毛免费播放 | 欧美成人精品第一区首页 | 欧美黄色网络 | 一区二区三区免费视频 www | 亚洲国产人久久久成人精品网站 | 国产一区二区三区四区在线污 | 久久香蕉国产线看观看8青草 | 啪啪综合| 中文字幕无线码一区二区三区 | a黄色一级 | 国产精品不卡无毒在线观看 | 国产一区二区三区免费 | 成年女美黄网站大全免费播放 | 在线免费不卡视频 | 国内自拍 在线播放 网红 | 国内精品在线播放 | 国产精品第八页 | 麻豆传媒入口 | 影音先锋5566手机在线播放 | 久久国产免费观看精品 | 日韩在线视频一区二区三区 | 日韩高清特级特黄毛片 | 久久精品国产精品亚洲 | 欧美日韩成人高清在线播放 | 欧美日韩国产高清视频 | 国产综合网站 | 高清免费国产在线观看 | 日本一级免费 | 一级一级一片免费 | 久草视频在线免费看 | 国产精彩视频在线观看免费蜜芽 | 日韩岛国大片 | 永久免费看毛片 | 国产日韩欧美亚洲综合首页 | 欧美日韩国产亚洲综合不卡 | 91破解版在线 | 亚洲 |