python并发任务

线程是执行用的,队列是存放结果用的

目录

1  多线程 threading

1.1  基本用法

1.2  循环使用

2  队列 queue

2.1  先进先出 queue.Queue()

2.2  后进先出 queue.LifoQueue()

2.3  优先级队列

3  线程池


1  多线程 threading

1.1  基本用法

使用的库为threading,threading是python内置的库

我们每运行一个python文件相当于开启了一个进程,一个进程中有多个线程,如果使用了多线程我们可以在一段py代码中并行运行程序

我下面做个简单的例子

python并发任务_第1张图片

我们发现第一个任务运行的时候,第二个任务并没有等待第一个任务结束后再开始运行,而是开启了任务一后,直接开启任务二

1.2  循环使用

python并发任务_第2张图片

开始的时候会根据start()的顺序开始,结束的时候,线程各自执行不会等待其他的线程

python并发任务_第3张图片

2  队列 queue

队列常用于处理多线程产生的结果

2.1  先进先出 queue.Queue()

依次放入1,2,3三个值,然后取三次,发现可以成功的按顺序取出1,2,3

python并发任务_第4张图片

如果队列空了之后再取,就会无限等待 

2.2  后进先出 queue.LifoQueue()

依次放入1,2,3三个值,然后取三次,发现可以成功的按顺序取出3,2,1

python并发任务_第5张图片

如果队列空了之后再取,就会无限等待

2.3  优先级队列

依次放入(2, 'B') ,(1, 'A') ,(3, 'C') 。元组的第一个值是优先级,数字越小优先级越高

python并发任务_第6张图片

如果队列空了之后再取,就会无限等待

3  线程池

我们现在搞一个4线程的线程池,然后搞五个任务

Pool()中间的值是线程的个数,pool.map的第一个参数是要执行什么函数,第二个参数是函数的参数。pool.close()是不让别的线程再进入线程池。pool.join()是等待线程池中的所有线程结束再执行下面的代码。

python并发任务_第7张图片

我们通过上面的结果可以看出,一开始执行了4个任务,等一个任务完成后自动开始执行第五个任务

你可能感兴趣的:(python基本操作,开发语言)