【粉丝福利】关注公众号,获取全套视频资料,喜欢小编点个 '关注' 吧!
与其他的编程语言数据结构相似,python同样提供了关于队列的支持,提供了‘先进先出’的数据处理方式这样的设计可以支持更多的算法业务的实现。在处理数据对象时可以被调用方进行锁定,因此更好的支撑多线程业务的实现。
1'''
2Queue():先进先出
3'''
4import queue
5
6queue_ = queue.Queue()
7
8# 向队列写入数据
9
10for i in range(1,5):
11
12 queue_.put(i)
13
14# 从队列中取出数据
15
16print("Queue():先进先出")
17
18while not queue_.empty():
19
20 print(queue_.get())
1'''
2LifoQueue():先进后出
3'''
4import queue
5
6queue_ = queue.LifoQueue()
7
8# 向队列写入数据
9
10for i in range(1,5):
11
12 queue_.put(i)
13
14# 从队列中取出数据
15
16print("LifoQueue():先进后出")
17
18while not queue_.empty():
19
20 print(queue_.get())
在操作系统中,我们常常会根据优先级来处理任务,比如系统的优先级最高,我们肯定优先处理系统任务,然后才处理用户的任务。同样,queue库给我们提供了PriorityQueue来处理优先级的队列。
1'''
2PriorityQueue():优先级
3'''
4import queue
5
6# 多线程扩展
7
8import threading
9
10# 设定一个处理任务
11
12class Task:
13
14 # 初始化数据对象
15
16 def __init__(self, priority, desc):
17
18 self.priority = priority
19
20 self.desc = desc
21
22 print("创建任务:", desc)
23
24 return
25
26 def __eq__(self, other):
27
28 try:
29
30 return self.priority == other.priority
31
32 except AttributeError:
33
34 return NotImplemented
35
36 def __lt__(self, other):
37
38 try:
39
40 return self.priority > other.priority
41
42 except AttributeError:
43
44 return NotImplemented
45
46# 处理任务
47
48def run_Task(queue_):
49
50 while True:
51
52 next_ = queue_.get()
53
54 print(next_.desc)
55
56 queue_.task_done()
57
58# 创建优先级队列
59
60queue_ = queue.PriorityQueue()
61
62# 向优先级队列中添加任务
63
64queue_.put(Task(6, "任务6"))
65
66queue_.put(Task(10, "任务10"))
67
68queue_.put(Task(2, "任务2"))
69
70# 创建线程数组
71
72threads = [
73
74 threading.Thread(target=run_Task, args=(queue_,)),
75
76 threading.Thread(target=run_Task, args=(queue_,)),
77
78]
79
80# 启动线程
81
82for thread in threads:
83
84 thread.setDaemon(True)
85
86 thread.start()
87
88# 守护/等待
89
90queue_.join()
06月20日
● 传说中的黑客都是破坏网络安全的不法分子吗?python语言为什么能成为黑客神器!【精选】
● python文件应用路径须谨慎,小细节往往出现大事故。程序员品质:不放过一处BUG!
● python移除List列表重复项的常见方式(建议收藏)!
● python如何快速构建出可视化地图,matplotlib可以编辑的世界地图!【精选】
● 普查结果:141178万人,python轻松制作全国第七次人口普查数据分布图、各地区人口数!
● pip自动安装python扩展库,解放码农劳动力,不同版本、不同项目统一安装配置,不用再为不同版本的不同依赖库而抓狂
● python虚拟环境的安装到底有什么意义,用最便捷的方法完成python虚拟环境的安装、配置!【精选】
● 日常校验要精准:Python字符串处理,字符串头尾匹配,内置函数匹配与正则匹配
● 程序员的朋友圈怎么能平平无奇,不用photoshop,几行python代码搞定九宫格朋友圈,快去分享吧!【精选】
● 无所不能的Python是这样实现文件的解压缩的,zipfile扩展库一行代码搞定文件解压缩!
● 编程大事件:Java被超越、网红语言Python后续或将稳居编程语言第二名,甚至有望超越第一!
● 儿童节快乐:python基础变量赋值 | 为什么在python变量中copy()函数如此重要,普通的变量赋值隐藏着怎样的秘密?【精选】