总结

创建一个队列:queue_obj = queue.Queue(maxsize=30)

maxsize :表示允许存储的最

(FIFO) : 对列--先进先出

存值 : queue_obj.put( )

取值 : queue_obj.get( )

获取队列的大小 : queue_obj.qsize( )

判断队列是否满 : queue_obj.full( )

判断队列是否为空 : queue_obj.empty()

# 注意 : 队列是线程安全的,list,dict 是非线程安全的,使用的时候最好使用线程锁

多线程

什么是多任务:同时执行多个任务 例如:同时打开微信,QQ,word,优酷,浏览器

同时执行--并行

单核同时执行的任务数量只有一个,但是看上去像是在执行多个任务,是          因为切换的间隔时间级短

多核cpu:同时可以执行多个任务,假如任务量超过核心数,在某个核心下  任务会交替执行

并发和并行的概念:

并发:单核cpu同时执行多个任务,任务是同时发起的,但是并不是同时执行,而是交替执行

并行:任务数量小于或等于核心数,这个时候每一个核心都在执行任务,任务是同时执行的,

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

1.多线程

2.多进程

3.协程

线程之间的操作是无序的

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

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

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

  启动线程: thread.start()

  添加join的目的:为了让任务队里中的所有请求都执行完毕

  线程锁:threadlock = threading.Lock()

进程池

导入    from multiprocessing import Pool

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

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

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

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

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

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

callback=None,(执行成功后的回调)

error_callback=None,(执行错误之后的回调)

关闭进程池:pool.close  pool.join():join方法 让进程池中的任务执行完毕后,回到主线程继续执行  pool.submit(): 向进程池中添加任务  .add_done_callback():添加回调方法  pool.shutdown():执行了join 方法    使用manage().Queue() 创建一个队列,可以实现在进程池的进程中实现数据的共享(通讯)  q = Manger().Queue()

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