如何使用Python实现多线程队列
阅读更多:Python 教程
介绍..
在本例中,我们将创建一个任务队列,其中包含要执行的所有任务,以及与队列交互以单独处理其元素的线程池。
我们将从问题开始:什么是队列?队列是一种数据结构,是一系列不同元素按非常特定的顺序维护的集合。让我通过采取实际生活例子来解释。
假设您站在杂货店柜台付钱排队(别问我是哪家杂货店)。
在排队等候付账的人群中,您会注意到以下内容:
1.人们从队列的一端进入并从另一端退出。
2.如果A在B之前进入队列,除非B是名人或优先级更高,否则A将在B之前离开队列。
3.一旦每个人都付了账,排队的人就没有了。
好吧,回到编程,队列的工作方式类似。
1. enqueue – 将元素添加到队列的末尾。
2. dequeue – 从队列开头删除元素。
还有更多,先进先出(FIFO)-首先添加的元素将首先被删除。后进先出(LIFO)-添加的最后一个元素将首先被删除。
Python如何实现队列数据结构?
Python中的队列模块提供了队列数据结构的简单实现。每个队列可以具有以下方法。
- get():返回下一个元素。
-
put():添加一个新元素。
-
qsize():队列中当前元素的数量。
-
empty():返回一个布尔值,指示队列是否为空。
-
full():返回一个布尔值,指示队列是否已满。
1.我们将创建一个函数,它接受一个参数x,然后遍历1到x之间的数字进行乘法。例如,当您将5传递给此函数时,它将遍历1到5并不断相乘,即1乘以5,2乘以5,3乘以5,4乘以5,5乘以5,最后将值作为列表返回。
示例
输出
2.我们将编写另一个名为process_queue()的函数,该函数将尝试获取队列对象的下一个元素。这很简单的逻辑,不断传递元素,直到队列为空。我将使用sleep稍微延迟一下程序进行。
示例
3.创建一个类,初始化并启动新实例时将调用process_queue()函数。
示例
4.最后,我们将传递数字的输入列表并填充队列。
5.最后,将所有内容放在一起。
输出
输出
输出
输出
6. 我们成功地实现了队列的概念。看看我们有4个线程,但是有6个值需要处理,所以谁先到达队列,谁将被执行,其他人将排队等待其他人完成。 这与现实生活类似,假设有3个柜台,但有10个人在等待付账,因此10个人将在3个队列中排队等候,谁先付了账就离开队列为下一个人腾出位置。