大家经常使用Python3的urllib库进行get请求,得到数据,来封装爬虫的行为。下面封装了一个方法供大家参考使用:
余弦相似度和欧氏距离的区别
Basic Vector Space Search Engine Theory
LA2600– January2, 2004 - presented by Vidiot
Overview:
A Vector Space Search Engine uses very simple techniques from matrix algebra to compare documents based on word frequency.
The first major component of a vector space search engine is the concept of a term space. Simply put, a term space consists of every unique word that
appears in a collection of documents.
info函数的封装
大家在使用Python help或者info查看信息时,有时显得很不灵活,冗长并且全英文(可能对一些英文不太好的人而言不方便)。于是,我就封装了下面一个小方法,可以实现将模块或者函数的名称和doc string的中文解释对应上。这里的中文解释来源于有道词典的网络API数据抓取。
正则表达式
正则表达式
动机
1.处理文本成为计算机常见工作之一
2.对文本内容的搜索提取是一项比较复杂困难的工作
3.为了快速方便处理上述问题,正则表达式技术诞生,逐渐被发展为一个被众多语言使用的独立技术
进程间通信方式
进程池
进程池
在需要频繁的创建删除较多进程的情况下,导致计算机资源消耗过多
进程池如何处理
1.创建进程池,在池内放入适量的进程
2.将事件加入进程池等待队列
3.使用进程池中的进程不断处理事件
4.所有事件处理后,回收关闭进程池
multiprocessing模块
multiprocessing
模块创建进程,标准库
1.需要将事件封装为函数
2.使用multiprocessing提供的类创建新进程
3.新的进程和对应的函数相关联,进程启动会自动执行函数,完成事件
4.进程回收
僵尸进程
孤儿进程:
父进程先于子进程退出,此时子进程便为孤儿进程
孤儿进程会被系统指定的进程所“收养”,即该进程称为孤儿进程的新的父进程
在孤儿进程退出时,“继父”会进行处理,不会是其成为僵尸进程
TCP粘包处理方法
tcp粘包处理
tcp中数据以数据流的方式发送接收,每次发送的数据间没有边界,在接收时可能造成数据的粘连即为粘包
粘包如何处理:
1.每次发送消息结束位置加标志
2.发送的消息添加结构描述
3.当连续发送时每次发送有一个短暂的延迟 sleep(0.1)
fork多进程
使用fork方法,创建多进程
import os
os.fork()
功能:创建一个新的进程
参数:无
返回值:失败返回一个负数, -1
成功 0 在子进程中fork的返回值
>0的正整数(新进程的PID号)在父进程中的返回值