python redis 列表插入 速度太慢
typecho
typecho 2017-06-28 09:21:58
0
1
1178
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))
 

這種執行效率低的可怕。
要等幾十秒,才能插入完成。
請問有沒更高效率的處理手法?

args 只是以一個元組內容隨意(1,2,"3")之類

typecho
typecho

Following the voice in heart.

全部回覆(1)
刘奇

因為我個人沒用過redis這個庫, 所以只能嘗試從你給的程式碼去給些建議, 不喜勿噴:

1.不知道你的這個a​​rgs是哪來的, 但是在這個循環體中, 似乎沒看到改變, 所以能否將這個json.dumps(args)放到循環體外面執行:

args_dump = json.dumps(args)
for i in range(10000):
    for j in range(30):
        client.lpush(IDLE_TASKS, args_dump)

2.看到你大概要產生30萬的同樣的數據, 能否將這個數據先生成, 再一次性client.lpush? 因為畢竟tcp也有自身的延遲因素

3.可以透過cProfile庫去找出耗時長的地方, 也可以嘗試換別的庫去實現(這個具體得自己去google了)

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!