亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Peewee 查詢在多線程下運行緩慢

Peewee 查詢在多線程下運行緩慢

長風秋雁 2023-05-09 09:58:16
在將 peewee 與線程一起使用時,我發現了這個有趣的場景。我有一張看起來像這樣的桌子class Locks(BaseModel):_id = AutoField()name = CharField(unique=True, index=True)last_modify_time = DateTimeField(constraints=[SQL("DEFAULT CURRENT_TIMESTAMP")])owner = CharField()class Meta:    table_name = 'locks'我想用這個 sql 查詢它包含的記錄數:sql = Locks.select().where(Locks.name == 'test')sql.execute()很簡單,對吧?但是我發現它運行得非常慢。在沒有線程的情況下,查詢我們網絡中的數據庫所需的時間為 3 - 5 毫秒。但是當涉及到多線程時,它會增長到 70 毫秒。代碼如下所示:def test_lock():    sql = Locks.select().where(Locks.name == 'test')    sql.execute()def run_thread():    test = threading.Thread(target=test_lock)    test.start()    test.join()yappi.set_clock_type('Wall')yappi.start()for _ in range(100):    run_thread()yappi.stop()
查看完整描述

1 回答

?
白衣染霜花

TA貢獻1796條經驗 獲得超10個贊

Peewee 將連接狀態存儲在線程局部變量中。因此,每個線程都有一個單獨的連接。如果您查看分析輸出,我認為具有指導意義的行是:

22       100    6.415    0.064    6.618    0.066 /usr/lib64/python2.7/site-packages/MySQLdb/connections.py:62(Connection.__init__

您要建立 100 個不同的連接,這很昂貴。

據推測,一旦您設置了它們,查詢的性能就會提高一些。


查看完整回答
反對 回復 2023-05-09
  • 1 回答
  • 0 關注
  • 180 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號