知行编程网知行编程网  2022-10-02 00:30 知行编程网 隐藏边栏  7 
文章评分 0 次,平均分 0.0
导语: 本文主要介绍了关于python线程优先级队列有哪些?的相关知识,包括python实现优先队列,以及python的优先级队列这些编程知识,希望对大家有参考作用。

什么是 python 线程优先级队列?

Python 的 Queue 模块提供了同步的、线程安全的队列类,包括 FIFO(先进先出)队列 Queue、LIFO(后进先出)队列 LifoQueue 和优先级队列 PriorityQueue。


1、说明

这些队列都实现了锁原语,可以直接在多线程中使用,队列可以用来实现线程间的同步。

模块中的常用方法如下:

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

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

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

Queue.full 与 maxsize 大小对应

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

Queue.get_nowait() 相当Queue.get(False)

Queue.put(item) 写入队列,timeout等待时间

Queue.put_nowait(item) 相当Queue.put(item, False)

Queue.task_done() 完成作业后,Queue.task_done() 函数向队列发送任务已完成的信号

Queue.join() 实际上意味着等到队列为空,再执行别的操作


2、实例

#!/usr/bin/python3
 
import queue
import threading
import time
 
exitFlag = 0
 
class myThread (threading.Thread):
    def __init__(self, threadID, name, q):
        threading.Thread.__init__(self)
        self.threadID = threadID
        self.name = name
        self.q = q
    def run(self):
        print ("开启线程:" + self.name)
        process_data(self.name, self.q)
        print ("退出线程:" + self.name)
 
def process_data(threadName, q):
    while not exitFlag:
        queueLock.acquire()
        if not workQueue.empty():
            data = q.get()
            queueLock.release()
            print ("%s processing %s" % (threadName, data))
        else:
            queueLock.release()
        time.sleep(1)
 
threadList = ["Thread-1", "Thread-2", "Thread-3"]
nameList = ["One", "Two", "Three", "Four", "Five"]
queueLock = threading.Lock()
workQueue = queue.Queue(10)
threads = []
threadID = 1
 
# 创建新线程
for tName in threadList:
    thread = myThread(threadID, tName, workQueue)
    thread.start()
    threads.append(thread)
    threadID += 1
 
# 填充队列
queueLock.acquire()
for word in nameList:
    workQueue.put(word)
queueLock.release()
 
# 等待队列清空
while not workQueue.empty():
    pass
 
# 通知线程是时候退出
exitFlag = 1
 
# 等待所有线程完成
for t in threads:
    t.join()
print ("退出主线程")

以上就是python线程优先级队列的介绍,希望能对

大家有所帮助。

更多Python学习指路:

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写
扫一扫二维码分享