linux优先级队列,Python3 线程优先级队列( Queue)
导读
Python 的 Queue 模块中提供了同步的、线程安全的队列类,包括FIFO(先入先出)队列Queue,LIFO(后入先出)队列LifoQueue,和优先级队列 PriorityQueue。
这些队列都实现了锁原语,能够在多线程中直接使用,可以使用队列来实现线程间的同步。
Queue 模块中的常用方法:
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() 实际上意味着等到队列为空,再执行别的操作
实例:
#!/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 ("退出主线程")
以上程序执行结果:
开启线程:Thread-1
开启线程:Thread-2
开启线程:Thread-3
Thread-3 processing One
Thread-1 processing Two
Thread-2 processing Three
Thread-3 processing Four
Thread-1 processing Five
退出线程:Thread-3
退出线程:Thread-2
退出线程:Thread-1
退出主线程
linux优先级队列,Python3 线程优先级队列( Queue)相关推荐
- linux下java转储线程_Java线程转储prio值与linux上的真实线程优先级不对应?
我打算在我的 Java代码中使用线程优先级. 应用程序应在我的 Linux系统上运行: >uname -a Linux 3.0.0-15-generic #26-Ubuntu SMP x86_6 ...
- java设置子线程优先级_Java 实例 - 线程优先级设置
Java 实例 - 线程优先级设置 以下实例演示了如何通过setPriority() 方法来设置线程的优先级: SimplePriorities.java 文件 public class Simple ...
- java最高线程优先级是,Java线程优先级
详细内容 Java 线程优先级 Thread 类中,使用如下属性来代表优先级.private int priority; 我们可以通过 setPriority(int newPriority) 来设置 ...
- C# 模拟一个处理消息队列的线程类 Message Queue
1 // 模拟一个处理消息队列的类 2 class MessageHandler 3 { 4 // 消息队列 5 private Queue<string> messageQue = ne ...
- 【C/C++调整线程优先级】
线程优先级 前言 一.线程优先级设置 常用函数 1. pthread_attr_init函数: 2. pthread_attr_setinheritsched函数: 3. pthread_attr_s ...
- 【C++ 语言】线程安全队列 ( 条件变量 | 线程调度 )
文章目录 I . 线程简单使用 II . 互斥锁 III . 条件变量 线程同步 IV . 完整代码示例 006_ThreadSafeQueue.h 006_ThreadSafeQueue.cpp S ...
- 了解Java线程优先级,更要知道对应操作系统的优先级,不然会踩坑
Java 多线程系列第 6 篇. 这篇我们来看看 Java 线程的优先级. Java 线程优先级 Thread 类中,使用如下属性来代表优先级. private int priority; 我们可以通 ...
- c语言怎么设置cpu优先级,线程优先级,设置,setPriority()方法
package seday08.thread; /** * @author xingsir * 线程优先级 * 线程启动后纳入到线程调度,线程时刻处于被动获取CPU时间片而无法主动获取.我们可以通过调 ...
- java多线程优先级的方法_Java多线程以及线程优先级
文章目录 1 继承Thread类多线程的实现获取和设置线程名称线程优先级 2 实现Runnable接口3 实现Callable接口4 使用线程池 1 继承Thread类 多线程的实现 实现多线程只需要 ...
最新文章
- tcp/ip 协议栈Linux源码分析三 IPv4分片报文重组分析三
- 03.full_text interval查询
- 什么是Spring Integration?
- 【spider】多线程爬虫
- Python int函数 - Python零基础入门教程
- Ubuntu 14.04 安装配置 cairo-dock 实现美化+特效
- 好友助力功能php开发,微开讲_帮助中心
- mysql 查询缓存及设置
- Python 音频: sounddevice 使用 左声道/右声道/立体声 --- 播放,录音
- 程序员入门必备经典书单
- Arm中国换帅风波始末 | 钛媒体深度
- 为什么入侵地球的总是火星人,是别的星球不够努力吗?
- 计算机科技手抄报内容,科技手抄报内容-科技在我身边
- 二十三、正则表达式中的“r”含义
- net-java-php-python-伊犁旅游网站计算机毕业设计程序
- 安装Anaconda出现Error opening file for writing错误最简单有效的办法
- 【BZOJ3172】[TJOI2013] 单词(AC自动机的小应用)
- java如何让线程sheep_Java面试知识点之线程篇(三)
- C语言常用的系统函数
- mac无法通过触摸版、无法通过鼠标拖曳文件?