本文摘自php中文网,作者乌拉乌拉~,侵删。
对于第一次接触到python这门编程语言的朋友来说,刚刚开始学习python编程的时候对于python线程这一方面的了解比较少,在这篇文章之中我们就来了解一下python线程优先级以及python线程优先级设置方面的知识。线程优先级队列(Queue)
Python的Queue模块中提供了同步的、线程安全的队列类,包括FIFO(先入先出)队列Queue,LIFO(后入先出)队列LifoQueue,和优先级队列PriorityQueue。这些队列都实现了锁原语,能够在多线程中直接使用。可以使用队列来实现线程间的同步。
Queue模块中的常用方法:
1.Queue.qsize() 返回队列的大小
2.Queue.empty() 如果队列为空,返回True,反之False
3.Queue.full() 如果队列满了,返回True,反之False
4.Queue.full 与 maxsize 大小对应
5.Queue.get([block[, timeout]])获取队列,timeout等待时间
6.Queue.get_nowait() 相当Queue.get(False)
7.Queue.put(item) 写入队列,timeout等待时间
8.Queue.put_nowait(item) 相当Queue.put(item, False)
9.Queue.task_done() 在完成一项工作之后,Queue.task_done()函数向任务已经完成的队列发送一个信号
10.Queue.join() 实际上意味着等到队列为空,再执行别的操作
举例如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | # !/usr/bin/python
# -*- coding: UTF-8 -*-
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 "Starting " + self.name
process_data(self.name, self.q)
print "Exiting " + 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 "Exiting Main Thread"
|
以上实例所输出的结果如下:
1 2 3 4 5 6 7 8 9 10 11 12 | Starting Thread-1
Starting Thread-2
Starting Thread-3
Thread-1 processing One
Thread-2 processing Two
Thread-3 processing Three
Thread-1 processing Four
Thread-2 processing Five
Exiting Thread-3
Exiting Thread-1
Exiting Thread-2
Exiting Main Thread
|
以上就是本篇文章所讲述的所有内容,这篇文章主要介绍了python线程优先级的相关知识,希望你能借助资料从而理解上述所说的内容。希望我在这片文章所讲述的内容能够对你有所帮助,让你学习python更加轻松。
更多相关知识,请访问php中文网Python教程栏目。
以上就是python线程优先级队列是什么?线程优先级的设置方法有哪些?的详细内容,更多文章请关注木庄网络博客!!
相关阅读 >>
如何在Python环境下安装selenium+headless chrome
一个Python就可以实现所有的算法
Python字符串字母怎么取出
Python函数之callable(object)
Python使用pylab库实现绘制直方图功能
Python中input函数的用法是什么?
Python中如何用django连接数据库(图文)
Python写入已存在的excel数据实例
Python的元类如何使用
Python如何使用列表
更多相关阅读请进入《Python》频道 >>
人民邮电出版社
python入门书籍,非常畅销,超高好评,python官方公认好书。
转载请注明出处:木庄网络博客 » python线程优先级队列是什么?线程优先级的设置方法有哪些?