python线程优先级队列有哪些?
- 更新时间:2021-07-03 08:18:07
- 编辑:邹坚秉
参考资料
- Python网络爬虫从入门到实践 PDF 电子书 / 154.1 MB / 唐松/陈智铨 推荐度:
- Python自动化运维:技术与最佳实践 PDF 电子书 / 150.4 MB / 刘天斯 推荐度:
- Python数据可视化 PDF 电子书 / 92.7 MB / 科斯·拉曼 推荐度:
- 《Python趣味编程入门》代码文件 配套资源 / 34.34 KB / (英)迈克·桑德斯(Mike Saund 推荐度:
- 编写高质量代码:改善Python程序的91个建议 PDF 电子书 / 54.9 MB / 张颖赖勇浩著 推荐度:
正文内容
码农之家最近发表了一篇名为《python线程优先级队列有哪些?》的py文章,代码整理的很实用,重新编辑了一下发到本站,看完如果觉得有用请记得收藏。
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学习指路:
相关教程
-
pip已经安装好第三方库但pycharm中import时还是标红的解决方案
这篇文章主要介绍了python中pip已经安装好第三方库但pycharm中import时还是标红的问题,本文给大家分享解决方法,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
发布时间:2021-05-02
-
python绕过图片滑动验证码实现爬取PTA所有题目功能 附源码
这篇文章主要介绍了python绕过图片滑动验证码实现爬取PTA所有题目 附源码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
发布时间:2021-05-02