文章详情页
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))
这种执行效率低的可怕。需要等几十秒,才能插入完成。请问有没更高效率的处理手法?
args 只是以一个元组内容随意(1,2,'3')之类
问题解答
回答1:因为我个人没用过redis这个库, 所以只能尝试从你给出的代码去给些建议, 不喜勿喷:
1.不知道你的这个args是哪来的, 但是在这个循环体中, 似乎没看到改变, 所以能否将这个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了)
相关文章:
1. javascript - 读取页面源码,页面中所有的换行都被当成<br/>读取出来 了,,求解应该怎么让它被正确的解析2. java - 3个dao的数据根据请求参数选择一个映射到一个url上,怎么写比较好?3. css - 手机端chrome打开github和bilibili等少数网站会发现地址栏周围也会有背景色4. docker 17.03 怎么配置 registry mirror ?5. javascript - 关于一段 for 循环代码执行顺序的问题6. javascript - 静态页面引公共头尾文件,js怎么写吖?7. java - Spring使用@Autowired失效但是getBean()可以执行成功8. html5 - 百度Ueditor代码高亮和代码段滚动条冲突是怎么回事?9. docker网络端口映射,没有方便点的操作方法么?10. javascript - JS中如何实现 DIV内部和鼠标的距离
排行榜