python redis 列表插入 速度太慢
問題描述
pool = redis.ConnectionPool(host=host, port=port)client = redis.StrictRedis(connection_pool=pool)for i in range(10000): for j in range(30):client.lpush(IDLE_TASKS, json.dumps(args))
這種執(zhí)行效率低的可怕。需要等幾十秒,才能插入完成。請(qǐng)問有沒更高效率的處理手法?
args 只是以一個(gè)元組內(nèi)容隨意(1,2,'3')之類
問題解答
回答1:因?yàn)槲覀€(gè)人沒用過redis這個(gè)庫, 所以只能嘗試從你給出的代碼去給些建議, 不喜勿噴:
1.不知道你的這個(gè)args是哪來的, 但是在這個(gè)循環(huán)體中, 似乎沒看到改變, 所以能否將這個(gè)json.dumps(args)放到循環(huán)體外面執(zhí)行:
args_dump = json.dumps(args)for i in range(10000): for j in range(30):client.lpush(IDLE_TASKS, args_dump)
2.看到你大概要生成30萬的同樣的數(shù)據(jù), 能否將這個(gè)數(shù)據(jù)先生成, 再一次性client.lpush? 因?yàn)楫吘箃cp也有自身的延遲因素
3.可以通過cProfile庫去找出耗時(shí)長的地方, 也可以嘗試換別的庫去實(shí)現(xiàn)(這個(gè)具體得自己去google了)
相關(guān)文章:
1. html - vue項(xiàng)目中用到了elementUI問題2. java - 如何寫一個(gè)intellij-idea插件,實(shí)現(xiàn)編譯時(shí)修改源代碼的目的3. javascript - 有什么比較好的網(wǎng)頁版shell前端組件?4. javascript - 如何將一個(gè)div始終固定在某個(gè)位置;無論屏幕和分辨率怎么變化;div位置始終不變5. javascript - 求解答:實(shí)例對(duì)象調(diào)用constructor,此時(shí)constructor內(nèi)的this的指向?6. javascript - vscode alt+shift+f 格式化js代碼,通不過eslint的代碼風(fēng)格檢查怎么辦。。。7. html5 - 有可以一次性把所有 css外部樣式轉(zhuǎn)為html標(biāo)簽內(nèi)style=" "的方法嗎?8. javascript - [js]為什么畫布里不出現(xiàn)圖片呢?在線等9. java 中Long 類型如何轉(zhuǎn)換成Double?10. javascript - 原生canvas中如何獲取到觸摸事件的canvas內(nèi)坐標(biāo)?
