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è)庫(kù), 所以只能嘗試從你給出的代碼去給些建議, 不喜勿噴:
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庫(kù)去找出耗時(shí)長(zhǎng)的地方, 也可以嘗試換別的庫(kù)去實(shí)現(xiàn)(這個(gè)具體得自己去google了)
相關(guān)文章:
1. javascript - js中遞歸與for循環(huán)同時(shí)發(fā)生的時(shí)候,代碼的執(zhí)行順序是怎樣的?2. python - linux怎么在每天的凌晨2點(diǎn)執(zhí)行一次這個(gè)log.py文件3. php如何獲取訪問者路由器的mac地址4. android - 鍵盤遮擋RecyclerView5. 如何分別在Windows下用Winform項(xiàng)模板+C#,在MacOSX下用Cocos Application項(xiàng)目模板+Objective-C實(shí)現(xiàn)一個(gè)制作游戲的空的黑窗口?6. javascript - jQuery each 方法第三個(gè)參數(shù)args 如何解釋?7. javascript - 在 vue里面用import引入js文件,結(jié)果為undefined8. java - new + 類名,一定需要申明一個(gè)對(duì)象嗎?9. 小程序怎么加外鏈,語句怎么寫!求救新手,開文檔沒發(fā)現(xiàn)10. javascript - vue-resource中如何設(shè)置全局的timeout?
