性能
文章平均质量分 87
笑笑布丁
个人博客:https://madpudding.github.io/
展开
-
重新认识元组
元组也就是python里的tuple,我相信很多人和我一样,就是在刚开始学习python的时候,仅仅只是把元组当作一个不可变列表,一个不可改变的列表,牺牲了自由度,在很多的场景中并不适用,故而一般很少用到元组。原创 2024-04-10 17:47:26 · 439 阅读 · 0 评论 -
scrapy killed原因探究
scrapy killed原因探究scrapy killed原因探究原因什么会导致scrapy内存溢出呢?可能导致内存溢出的元素lxml吃掉内存如何查看scrapy内存使用使用telent使用prefs()查看scrapy指标从上图可以看到,爬虫运行2000多秒时,scrapy的scheduler已经堆积了1318个request等待处理,600多的response等待处理.使用 muppy 查看内存 使用可以看到问题爬虫运行到600s秒时,bytes就已经暴涨到500多MB了,这是导致问题爬虫运行一段时间原创 2021-04-26 15:36:08 · 611 阅读 · 2 评论 -
python进阶小技巧 使用默认迭代器与操作符
这种情况一般发生支持默认迭代器和操作符的类型上,比如list、dict或者文件.操作符的解释:in 和 not in使用缘由:默认的操作符和迭代器没有额外方法调用,会比较高效,总觉得在python里面强调高效的感觉怪怪的。而且使用默认操作符的函数是通用的,它可以支持该操作的的任何类型.缺点:你可能没法通过方法名来区分对象类型使用场景:如果类型支持应该优先考虑,只是这样,你在遍历容器时,你不能修改它.eg: for key in a_dict: ... if key not in a原创 2020-12-17 16:28:51 · 188 阅读 · 0 评论 -
python进阶之Python的方法解析顺序
背景,这部分知识主要体现在继承的问题上,当我们使用继承时,这是我们需要考虑的问题,这个在使用super()上尤为重要.值得注意的是,python3和python2在方法的解析顺序是不一样的,python2作为时代的弃儿,我这里就不解释了,这里着重解释python3的方法解析顺序.知识点:Python的方法解析顺序是基于C3,这是为Dylan编程语言(http://opendylan.org)构建的MRO,而python对MRO的解释则出现在:自定义类这种类型一般通过类定义来创建 (参见 类定义 一节)。原创 2020-11-26 18:56:35 · 402 阅读 · 0 评论 -
使用HAProxy为rabbitmq实现负载均衡
背景:实际上rabbitmq远没有达到性能瓶颈,但是celery与mq对接总是有些问题,在github找到了解决之道,便试着解决,后续观察效果1、安装haproxysudo apt-get install haproxyvim /etc/haproxy/haproxy.cfg # 这一步是配置haproxy配置项#---------------------------------------------------------------------# Global settings#原创 2020-11-11 11:38:07 · 983 阅读 · 0 评论 -
scrapy 运行多爬虫
背景:scrapy是支持多爬虫启动的,有两种方式.你可以使用scrapy.crawler.CrawlerProcess这个类来运行你的spider,这个类会为你启动一个Twisted reactor,并能配置你的日志和shutdown处理器。所有的scrapy命令都使用这个类.另外一个功能更强大的类是scrapy.crawler.CrawlerRunner,我用的就是这个,目前同时启动过7个爬...原创 2020-01-14 16:01:58 · 820 阅读 · 0 评论 -
Python 正则里 re.compile 真的是必需的吗?
背景:我在爬虫处理某个文本时,用到了re.findall(),而不是re.compile。远在新加坡的同事提出了质疑,认为以我的水平,不应该写出这样影响性能的代码,让我优化一下。我提出了反驳:既然使用了Python,就不应该太过考虑性能的问题,如果要考虑性能就使用C语言,而不是Python.他接着说:正是因为python性能不够,所以更应该考虑代码的优化,能做好就应该做到最好.最后,我没有回话,当...原创 2019-12-03 16:54:37 · 1314 阅读 · 2 评论