python线程优先级队列是什么?线程优先级的设置方法有哪些?


本文摘自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》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...