大家好,今天小编关注到一个比较有意思的话题,就是关于python学习长文的问题,于是小编就整理了2个相关介绍python学习长文的解答,让我们一起看看吧。

  1. Python爬虫如何优化内存?
  2. 大数据可视化软件和工具有哪些?

Python爬虫如何优化内存

我以自己的经验简单谈谈。

python学习长文-python文章
(图片来源网络,侵删)

长文预警!重点介绍布隆算法

一般来说,爬虫主要从以下几方面优化内存:

python学习长文-python文章
(图片来源网络,侵删)

1. 大量待爬的request对象或url链接。

a. 保存待爬的request对象比待爬的url有一些好处,但如果不在乎,就以url链接代替request对象,即可优化内存。

python学习长文-python文章
(图片来源网络,侵删)

b. 先以某些压缩算法进行压缩再保存入队。

出队后先解压再爬取。

2. 大量已爬取的url。

爬虫中显然需要知道哪些url已经爬取过,即url去重。

如果直接保存url显然非常耗内存,因此隆重推荐bloom filter(布隆过滤器)。

a. 先申请m个bit的内存,全部置0

b. ***设S={x1, x2,…,xn},表示n个已爬url指纹特征的***,那么用k个相互独立的哈希函数分别将***中的每个元素映射到{1,…,m}的范围中。

对任意一个元素x,第i个哈希函数映射的位置hi(x)就会被置为1(1≤i≤k)。

如上图,m=18,k=3。

对于X1分别映射到第1、5、13个bit的内存中。

对于X2分别映射到第4、11、16个bit的内存中。

对于X3分别映射到第3、5、11个bit的内存中。

c. 在判断y是否属于这个***时,先对y进行k次哈希函数,如果所有hi(y)的位置都是1(1≤i≤k),那么就认为y是***中的元素,否则不是***中的元素。

比如对于上图来说,m=18,k=3。

如果h1(y)、h2(y)、h3(y)分别映射到1、11、16,由于这3个位置都是1,那么认为y在***中。

如果h1(y)、h2(y)、h3(y)分别映射到0、11、16,由于这3个位置存在0,那么认为y不在***中。

显然,如果检测结果为是,该元素不一定在***中;

但如果检测结果为否,该元素一定不在***中。

比如,对于上图,k=7,漏失率为0.000112,256M内存即m=256*********8/表中的22=***61万。

意味着k=7时,申请256m的内存,可以对***61万url去重,大约有10932个url会重复Request。

以上是爬虫中耗内存的2个大户。

3. 减少数据库对内存的占用。避免数据库在内存中装载了大量的数据。

比如在爬虫中对mongo数据库检索,可能就会导致mongo数据库加载大量数据。

比如不检索无关的记录或字段

4.善用生成器。生成器天生就是用于内存优化的。

5.防止内存泄露

内存泄露的工具:gc、objgraph、guppy、pympler、pyrasite等等

如果对你有帮助,请点赞支持

大数据可视化软件和工具有哪些?

1.

FineBIFineBI是一款商业智能BI工具,做数据分析和可视化数据展现,以分析为主,提供多种数据接入方式,可视化功能强大,平台更适合掌握分析方法了解分析的思路的用户,其他用户的使用则依赖于分析师的结果输出...

2.

EchartChartecharts的优点:国产货有语言优势或区域优势。毕竟是中国制造,自己家做出来的,亲和力高,比较适用于我们...

3.

支付宝AntVAntV 是蚂蚁金服的数据可视化解决方案,主要包含「数据驱动的高交互可视化...

到此,以上就是小编对于python学习长文的问题就介绍到这了,希望介绍关于python学习长文的2点解答对大家有用。