- 博客(16)
- 资源 (5)
- 收藏
- 关注
原创 scrapy自定义网页中图片的下载策略
自定义的初衷是:想修改保存文件的默认名称, 我们希望保留图片原始的文件名。 此外,scrapy图片的下载过滤策略是用了过期时间,可以通过在settings.py中配置如下参数来设置图片的过期时间:IMAGES_EXPIRES = 90但是对我们抓取百度百科的业务,一张图片如果已经抓取过,则不需要再重新抓取,所以这个是一次性的, 因为图片发生变化的可能性很小,所以没有必要做重复性的抓取...
2018-11-30 18:48:16 567
原创 scrapy自定义Request的缓存策略(减少内存占用)
scrapy-redis大概的架构:从redis中拉url,构造Request对象,写入SCHEDULER_QUEUE_CLASS定义的队列中,调度器从队列中拉取Request进行抓取想自定义Request的初衷主要是为了减少内存的占用,当然虽然我们的内存消耗的也不是那么多,也就几个Gscrapy自带的几个队列有这么几个:* scrapy_redis.queue.SpiderQu...
2018-11-30 11:01:23 2266
原创 scrapy中自定义过滤规则以及start_urls不进过滤器的问题
为什么要自定义过滤规则呢? 首先,我们需要过滤,但是不是说抓一次就不抓了,因为我们的抓取是一段时间抓取一次自定义策略如下:首先我试图直接继承RFPDupeFilter在settings.py同级的目录下新建dupefilter.py文件,按照网上说的方法,写了内容如下from scrapy.dupefilter import RFPDupeFilterimport hashli...
2018-11-29 19:22:10 3574
原创 请求方报超时,服务日志中记录的时间却少有超时
请求方报超时的比例大概有4%他们设置的超时时间是500ms但是我们统计日志,服务时间超过500ms的日志很少原因是什么呢? 超时原因分析:1、请求内容太长根据请求方超时日志, 大多数query的长度都是1w以上,这些query我手动请求,响应时间的确大于500ms, 在服务端还没有处理完的时候,客户端已经超时断开了2、等待时间太长客户端报超时的query,其中有...
2018-11-27 14:19:44 2261
原创 日志中每段代码执行时间的和不等于整段代码执行的总时间
代码逻辑:def getInlink() A -> B -> C -> D 在tornado中调用getInlink@tornado.gen.coroutine def get(self): start2 = int(time.time()*1000) error, errReason, lstS...
2018-11-22 10:10:21 394
原创 日志中每段代码执行时间的和不等于整段代码执行的总时间
代码逻辑:A -> B -> C -> D 实践中,分别记录了上面四个步骤执行的时间, 假设为At, Bt, Ct, Dt,并且记录了整个4步的时间,假设为ADt发现4个代码片段的时间的和不等于总的时间, 也就是: ADt > At+Bt+Ct+Dt 原因是什么呢?A->D这个步骤中应该还有CPU调度的等待时间,这...
2018-11-21 19:24:06 384
原创 压测中提高并发数后服务端处理时间增长的原因分析
后端逻辑: 接收请求、分词匹配、读redis做一些过滤策略在不断提高并发数的压测过程中,发现一个问题,后台服务对一个请求的处理时间也在增高, 而且增高的主要时间是消耗在读redis过滤那块过滤那块的主要逻辑是:从redis中读数据,并基于这些数据做一些过滤的策略为什么这块的耗时会增长呢?难道是redis的线程池不够用?导致有些redis的io请求要等待一会?应该不会,因为redi...
2018-11-20 15:02:35 2874
原创 两台机器实现QPS3000的服务优化
服务流程: 输入为一句话, 分词、匹配百科词条,读redis过滤、从redis读词条summary信息、返回 需求: 业务方的峰值QPS为3000 按照之前相关百科的一套逻辑: 单机tornado服务进程数4个模拟10个并发,压测的QPS为332, 响应时间为30ms$siege -c10 -r5000 -f urls.lstTransacti...
2018-11-16 19:41:18 2354
原创 一次Redis任务队列积压的问题分析与解决
目前的流程:两个Redis:Redis1: 存储词条的summary信息Redis2:任务队列,用于暂存Redis中没有summary,需要进行处理获取summary, 队列用的Redis的list结构两个进程:1、 进程1:服务进程接收请求,划内链词,然后从Redis1中去获取词的summary, 如果获取失败,则返回code=4的错误,并将词条id写入任务队...
2018-11-16 11:32:32 6072
原创 tf.layers.conv1d函数解析(一维卷积)
一维卷积一般用于处理文本,所以输入一般是一段长文本,就是词的列表函数定义如下:tf.layers.conv1d(inputs,filters,kernel_size,strides=1,padding='valid',data_format='channels_last',dilation_rate=1,activation=None,use_bias=True,...
2018-11-14 15:09:10 52285 17
原创 二维卷积神经网络的结构理解
针对这个图,我们对应着卷积的api函数来说:tf.nn.conv2d(input, filter, strides, padding, use_cudnn_on_gpu=None, name=None)如上图:第一列为一张输入图像, 大小为7*7*3, 即宽高为7*7, 通道数为3所以inputs的维度就是: [-1, 7, 7, 3] , -1是表示batch的大小可以...
2018-11-14 15:07:13 6404
原创 个人对stacking的思想理解
主要分为几个基础模型,一个元模型对于基础模型,采用K折交叉的方式来采样数据,并分别进行训练,这样对于每个模型,都会用K组采样数据来进行训练,从而得到K个不同的模型版本假设现在基础模型有KNN,SVM, 那么对基础模型训练后会得到如下几个模型:KNN_model1, KNN_model2....KNN_modelKSVM_model1, SVM_model2....SVM_model...
2018-11-14 15:05:50 635
原创 preprocessing.StandardScaler中fit、fit_transform、transform的区别
1、fit用于计算训练数据的均值和方差, 后面就会用均值和方差来转换训练数据 2、fit_transform不仅计算训练数据的均值和方差,还会基于计算出来的均值和方差来转换训练数据,从而把数据转换成标准的正太分布 3、transform很显然,它只是进行转换,只是把训练数据转换成标准的正态分布 一般使用方法:a) 先用fitscaler = prepro...
2018-11-14 15:04:15 32752 8
原创 sklearn相关积累
sklearn的参考教程:https://morvanzhou.github.io/tutorials/machine-learning/sklearn/3-5-save/ 1、 解决的问题分类、回归、聚类和特征降维sklearn中有很多数据库可以用来练习 2、交叉验证: cross_val_score作用:用来评估模型的准确性,基于准确性,选择最好的模型。优势...
2018-11-14 15:02:54 436
原创 机器学习中遇到的问题
1、ImportError: libcublas.so.9.0: cannot open shared object file: No such file or directory找不到so库文件用自己的账户运行包会报上面的错误,但是用root账户运行却没有问题原因:root账户里面的LD_LIBRARY_PATH路径能找到这个so文件,但是自己的账户的LD_LIBRARY_PATH路...
2018-11-14 14:59:29 2335
原创 客户端请求时间和服务端处理时间不匹配问题
现象: 客户端日志,调一个接口耗时为2-3s 服务端日志,处理一个请求耗时只有100-200ms问题: 这明显速度不匹配, 理论上差不了太多才对分析原因: 可能是服务端处理不过来,虽然一个请求服务端处理的时间很短,但是客户端请求响应的时间主要是消耗在等待被处理上目前客户端的进程数是25, 服务端的服务进程数是2....
2018-11-14 14:54:26 4740
apache+php+mysql的嵌入式移植详细过程
2013-09-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人