日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

python使用多線程查詢數據庫的實現示例

瀏覽:152日期:2022-07-13 18:53:58

一.背景:

當數據量過大時,一個程序的執行時間就會主要花費在等待單次查詢返回結果,在這個過程中cpu無疑是處于等待io的空閑狀態的,這樣既浪費了cpu資源,又花費了大量時間(當然這里主要說多線程,批量查詢不在考慮范圍,總會存在不能批量查詢的情況),在這種非密集型運算(及大量占用cpu資源)的情況下在python中無疑運用多線程是一個非常棒的選擇。

二.知識點:

數據庫連接池的運用及優勢,python中多線程的運用,隊列的運用

數據庫連接池:限制了數據庫的連接最大個數,每次連接都是可以重復使用的,當然也可以限制每個連接的重復使用次數(這個在這里是沒必要的),需要注意的是設置的數據庫的最大連接個數最好要大于我們自己開的最大線程個數,一般邏輯是每個線程占用一個數據庫連接可以使程序達到最大速度,如果小于則可能存在同時連接個數大于數據庫允許的最大連接個數的風險。使用數據庫連接池的優勢在于,python多線程并發操作數據庫,會存在鏈接數據庫超時、數據庫連接丟失、數據庫操作超時等問題,而數據庫連接池提供線程間可共享的數據庫連接,并自動管理連接。

python多線程:在程序等待io的時間里調用多線程去數據庫執行查詢操作。

隊列:這個就是數據結構里面的知識了,一般隊列的常用模式先進先出隊列。(這里主要用的是隊列取一個數就少一個數的原理,其實用列表也可以實現,他的先進先出主要強調的是一個順序關系,這一點到沒用上,就當是練練手了)

三.兩段代碼作比較:

數據庫的截圖:

python使用多線程查詢數據庫的實現示例

第一段代碼:正常循環查詢并打印出執行時間

#!/usr/bin/python# -*- coding=utf-8 -*-import timeimport threadingimport MySQLdbimport Queuefrom MySQLdb.cursors import DictCursorfrom DBUtils.PooledDB import PooledDBdef mysql_connection(): host = ’localhost’ user = ’root’ port = 3306 password = ’123456’ db = ’test’ charset = ’utf8’ limit_count = 3 # 最低預啟動數據庫連接數量 pool = PooledDB(MySQLdb, limit_count, maxconnections=15, host=host, user=user, port=port, passwd=password, db=db, charset=charset, use_unicode=True, cursorclass=DictCursor) return poolstart = time.time()pool = mysql_connection()for id in range(50): con = pool.connection() cur = con.cursor() sql = ’’’select id,name,age,weight from test where id = %s ’’’%id cur.execute(sql) time.sleep(0.5) result = cur.fetchall() if result: print(’this is tread %s (%s,%s,%s,%s)’%(id,result[0][’id’],result[0][’name’],result[0][’age’],result[0][’weight’])) else: print(’this tread %s result is none’%id)end = time.time() - startprint(end)

執行結果:

python使用多線程查詢數據庫的實現示例

第二段代碼:限制數據庫連接池最大15個連接,用隊列限制最大線程個數為10個

#!/usr/bin/python# -*- coding=utf-8 -*-import timeimport threadingimport MySQLdbimport Queuefrom MySQLdb.cursors import DictCursorfrom DBUtils.PooledDB import PooledDBdef mysql_connection(): host = ’localhost’ user = ’root’ port = 3306 password = ’123456’ db = ’test’ charset = ’utf8’ limit_count = 3 # 最低預啟動數據庫連接數量 pool = PooledDB(MySQLdb, limit_count, maxconnections=15, host=host, user=user, port=port, passwd=password, db=db, charset=charset, use_unicode=True, cursorclass=DictCursor) return pooldef tread_connection_db(id): con = pool.connection() cur = con.cursor() sql = ’’’select id,name,age,weight from test where id = %s ’’’%id cur.execute(sql) time.sleep(0.5) result = cur.fetchall() if result: print(’this is tread %s (%s,%s,%s,%s)’%(id,result[0][’id’],result[0][’name’],result[0][’age’],result[0][’weight’])) else: print(’this tread %s result is none’%id) con.close()if __name__==’__main__’: start = time.time() #創建線程連接池,最大限制15個連接 pool = mysql_connection() #創建隊列,隊列的最大個數及限制線程個數 q=Queue.Queue(maxsize=10) #測試數據,多線程查詢數據庫 for id in range(50): #創建線程并放入隊列中 t = threading.Thread(target=tread_connection_db, args=(id,)) q.put(t) #隊列隊滿 if q.qsize()==10: #用于記錄線程,便于終止線程 join_thread = [] #從對列取出線程并開始線程,直到隊列為空 while q.empty()!=True:t = q.get()join_thread.append(t)t.start() #終止上一次隊滿時里面的所有線程 for t in join_thread:t.join() end = time.time() - start print(end)

程序備注應該還算比較清晰的哈,程序執行結果:

python使用多線程查詢數據庫的實現示例

四.結論:

看結果說話

到此這篇關于python使用多線程查詢數據庫的實現示例的文章就介紹到這了,更多相關python 多線程查詢數據庫內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产视频久久| 免费看欧美美女黄的网站| 欧美资源在线| 电影亚洲精品噜噜在线观看| 国产精品亲子伦av一区二区三区 | 国产精品白丝av嫩草影院| 蜜桃一区二区三区在线| 1024精品久久久久久久久| 国产不卡一区| 国产精品久久乐| 亚洲18在线| 视频一区在线视频| 图片区亚洲欧美小说区| 国产精品久久久久av电视剧| 久久男人天堂| 国产粉嫩在线观看| 欧美国产不卡| 里番精品3d一二三区| 欧美亚洲自偷自偷| 先锋亚洲精品| 国产亚洲永久域名| 日韩午夜电影| 在线视频亚洲| 日韩一区二区免费看| 亚洲女同一区| 欧美理论视频| 亚洲专区一区| 日韩中文字幕1| 丝袜诱惑制服诱惑色一区在线观看| 久久精品av| 国产尤物精品| 国产午夜久久| 免费在线观看成人| 亚洲免费毛片| 免费在线成人网| 日本一不卡视频| 视频一区二区三区入口| 亚洲专区视频| 日韩欧美2区| 欧美日韩1区| 国产精品a久久久久| 麻豆精品国产91久久久久久| 大香伊人久久精品一区二区| 91日韩免费| 日本高清不卡一区二区三区视频| 动漫av一区| 久久人人97超碰国产公开结果| 999精品色在线播放| 在线 亚洲欧美在线综合一区| 欧美影院三区| 在线免费观看亚洲| 欧美日韩视频免费看| 国产精品极品| 久久天堂影院| 在线一区视频观看| 黄色亚洲免费| 亚洲欧美久久精品| 久久不见久久见免费视频7| 久久97视频| 99久精品视频在线观看视频| 性色av一区二区怡红| 欧美在线黄色| 国产成人精品亚洲线观看| 私拍精品福利视频在线一区| 国产91一区| 美美哒免费高清在线观看视频一区二区 | 成人日韩精品| 好吊日精品视频| 欧美日韩夜夜| 日韩在线短视频| 综合视频一区| 国产在线一区不卡| 亚洲成人免费| 久久国产精品色av免费看| 中文在线а√天堂| 在线看片一区| 国产精品v亚洲精品v日韩精品| 欧美好骚综合网| 香蕉成人久久| 精品国产乱码久久久久久樱花 | 国产乱码精品一区二区三区四区| yellow在线观看网址| 国产精品毛片在线| 国产精品免费不| 欧美日韩在线网站| 欧美亚洲福利| 欧美jjzz| 国产精品chinese| 狠狠色狠狠色综合日日tαg| 亚洲精品免费观看| 欧美精品高清| 日本不卡视频在线| 成人久久一区| 日韩精品第一| 久久精品中文| 亚洲va久久| 日韩欧美一区二区三区免费看| 综合一区av| 久久天堂av| 日本欧美一区二区| 香蕉人人精品| 国产精品激情| 日韩中文字幕区一区有砖一区| 国产高清日韩| 亚洲精品.com| 久久国产精品免费一区二区三区| 99精品在线观看| 国产精品一区二区三区www| 午夜av一区| 欧美a在线观看| 亚洲免费毛片| 九一成人免费视频| 97精品国产福利一区二区三区| 视频一区日韩精品| 亚洲欧美一区在线| 黄色欧美在线| 日韩av资源网| 男人的天堂久久精品| 日韩高清不卡| 国产精品久久免费视频| 免费成人在线影院| 久久理论电影| 国产在线观看www| 国产日韩欧美一区二区三区在线观看 | 亚洲国产日韩欧美在线| 久久久久久美女精品| 四虎4545www国产精品| 高清av不卡| 久久蜜桃精品| 成人日韩在线观看| 美女亚洲一区| 男人的天堂久久精品| 日韩精品欧美成人高清一区二区| 欧美片第1页综合| 精品九九久久| 91精品国产乱码久久久久久久 | 国产精品调教| 久久精品理论片| 麻豆视频在线观看免费网站黄| 欧美日韩免费观看视频| 伊人久久成人| 涩涩涩久久久成人精品| 久久福利在线| 久久国产欧美| 香蕉久久久久久久av网站| 日本强好片久久久久久aaa| 欧美激情一区| av免费不卡国产观看| 久久精品中文| 久久国产精品99国产| 97精品国产99久久久久久免费| 欧美激情在线精品一区二区三区| 超碰在线99| 波多野结衣一区| 久久最新视频| 欧美激情视频一区二区三区免费 | 亚洲色图国产| 国产精品nxnn| 99精品电影| 亚洲三区欧美一区国产二区| 欧美精品第一区| 欧美成人午夜| 国产日本久久| 久久久久一区| 日韩精品中文字幕一区二区| 91亚洲一区| 午夜欧美精品久久久久久久| 日本aⅴ精品一区二区三区| 欧美激情国产在线| 石原莉奈一区二区三区在线观看| 欧美成人一二区| 精品欧美久久| 国产精品magnet| 不卡视频在线| 国产精品观看| 亚洲欧洲一区| 国产黄色一区| 国产精品毛片| 国际精品欧美精品| 免费观看久久久4p| av最新在线| 日韩在线黄色| 99久精品视频在线观看视频| 欧美日韩亚洲一区在线观看| 国产综合亚洲精品一区二| 国产日韩中文在线中文字幕| 久久中文字幕av| 久久av中文| 美女被久久久| 国产成人精品一区二区三区在线| 久久亚洲美女| 精品国产三区在线| 亚洲免费资源| 亚洲成a人片| 国产精品欧美在线观看| 欧美特黄一区| 国产欧美亚洲一区| 午夜精品网站| 成人在线免费观看91| 日本少妇精品亚洲第一区|