python很慢?那是你没有正确食用!

有个原公司的同事在招聘qt工程师,我向他推荐了pyqt而不是c++,c++工程师没有python好找,而且python开发快啊。python看起来可视化不太强,但是它是个强大的胶水语言,比如上面说的QT,python的pyqt5就是基于QT(c++)。

不要总是抱怨效率太低,就像numpy, pandas虽然是python包,但是运算起来一样很快,pandas是基于numpy库的数组结构上构建的,并且它的很多操作都是(通过numpy或者pandas自身由Cpython实现并编译成C的扩展模块)在C语言中实现的。因此,如果正确使用pandas的话,它的运行速度应该是非常快的。了解下pandas,numpy向量化吧!
python的优点在于社区活跃,不需要重复造轮子,基本上你需要的功能google下或者看下stackflow都能找到,我平时写代码都是先google下,基本上都能找到现成的,看起来很low但是用起来非常方便,这对于开发来说无疑降低了成本。
当然,python是个动态语言,用不好就会感觉很慢。比如它的多线程其实是伪多线程,适合web这种IO为主的应用,计算密集型它劣势比较明显。一般运算量大我就用多进程,就是资源开销大些,如果控制好内存消耗也还好(比如一个程序里我产生了多个dataframe变量,不用的时候手动del就有助于内存的回收)。

scrapy爬取一定数量页面后停止

总结scrapy异常停止的原因

说实话,我非常不喜欢scrapy这种框架,像一篇博客说的,高不成低不就。但是,scrapy有它的可取之处,不然怎么成为最流行的爬虫框架呢。

scrapy经常遇到的问题是,爬虫刚开始就结束或者爬了一些页面结束,甚至有时候就一直输出日志, 0 pages/min什么的。这种情况一般有下面几种原因:

  1. scrapy等待redis或者redis里没有url可爬了
  2. 去重设置过滤了url
  3. 爬虫逻辑有问题,死循环或者错误循环,或者xpath有问题不能获取下一页url

基本上这三种原因是爬虫异常停止的罪魁祸首。