Python+mysql遍历_python - 如何快速遍历数据库

@author:wepon @blog:http://blog.csdn.net/u012162613/article/details/43226127 计算机视觉、机器学习任务中,经常跟图像打交道,在C++上有成熟的OpenCV可以使用,在Python中也有一个图像处理库PIL(Python Image Library),当然PIL没有OpenCV那么多功能

我有一个数据库,里面有1千万的数据,每条数据存放一个url,我要测试这个url是否是可以链接的,使用python实现,什么思路?

使用twisted还是gevent?

如果使用gevent,如何动态添加url,比如我gevent的pool设置为100,在数据库中取出数据的时候如何遍历最高效?,

都行,建议你用队列来序列化整个工作,redis这种kv数据库级的或者是gevent.queue这种协程级的或者是multiprocessing.queue这种跨进程的队列都行……MySQLdb模块的下载地址: http://sourceforge.net/projects/mysql-python/source=typ_redirect 本机64位系统,安装了32位python2.7 简单连接例子: import MySQLdbconn=MySQLdb.connect(host="localhost",user="root",passwd="1qaz2wsx",db="qogismonitor")

目测这个工作主要瓶颈在检查url是否正常(http code 2xx?),次瓶颈在从数据库读这10M条记录。

对于检查url的工作,可以通过gevent/twisted/多线程/多进程来并发,就像你说的pool设置到100。

对于从数据库读出记录,并行不见得比串行访问更快……

所以,开一个到两个reader从数据库读,开100个以上的checker去检查url就可以了。中间放一个queue用来通信。

是这样的结构: reader ---(写入)--> 队列 ---(读出)--> checker

至于队列用什么实现,不是很重要……因为瓶颈不在这儿……

从数据库读就很容易了,如果只有一个reader,就select * from table得到一个完整的数据集,遍历写入队列即可

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值