python并发任务

发布时间:2024年01月17日

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

目录

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代码中并行运行程序

我下面做个简单的例子

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

1.2??循环使用

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

2??队列 queue

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

2.1??先进先出 queue.Queue()

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

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

2.2??后进先出 queue.LifoQueue()

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

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

2.3??优先级队列

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

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

3??线程池

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

Pool()中间的值是线程的个数,pool.map的第一个参数是要执行什么函数,第二个参数是函数的参数

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

文章来源:https://blog.csdn.net/potato123232/article/details/135650772
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。