总结

python下多线程的思考

对于资源,加锁是个重要的环节。因为python原生的list,dict等,都是not thread safe的。而Queue,是线程安全的,因此在满足使用条件下,建议使用队列

包中的常用方法:

Queue.qsize() 返回队列的大小

Queue.empty() 如果队列为空,返回True,反之False

Queue.full() 如果队列满了,返回True,反之False

Queue.full 与 maxsize 大小对应

Queue.get([block[, timeout]])获取队列,timeout等待时间

创建一个“队列”对象

多线程示意图:

进程:一个程序运行起来后,代码+用到的资源 称之为进程,它是操作系统分配资源的基本单元。不仅可以通过线程完成多任务,进程也是可以的

进程的状态

工作中,任务数往往大于cpu的核数,即一定有一些任务正在执行,而另外一些任务在等待cpu进行执行,因此导致了有了不同的状态

线程之间的操作是无序的

一个线程下面有一个主线程

线程:相当于打开一个浏览器

进程:相当于在浏览器里面打开多个窗口

实现多任务的手段(方式):

1.多线程

2.多进程

3.协程

什么是Scrapy框架

Scrapy一个开源和协作的框架是基于twisted框架开发而来,twisted是一个流行的事件驱动的python网络框架。因此Scrapy使用了一种非阻塞(又名异步)的代码来实现并发。是用纯Python实现一个为了爬取网站数据、提取结构性数据而编写的应用框架,用途非常广泛。导入 from multiprocessing import Pool

创建一个进程池:pool = Pool()

pool.apply()  同步的方法,执行效率比较低

apply_async  是一个异步方法,可以提高任务执行的效率

func,对应的任务的函数名称

args=() , 传递参数(元组)

kwds={} , 传递参数(字典)

迭代器

迭代是访问集合元素的一种方式。迭代器是一个可以记住遍历的位置的对象。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退

可迭代对象 我们已经知道可以对list、tuple、str等类型的数据使用for...in...的循环语法从其中依次拿到数据进行使用,我们把这样的过程称为遍历,也叫迭代。。

你可能感兴趣的:(总结)