队列的使用| 学习笔记

简介: 快速学习队列的使用

开发者学堂课程Python入门 2020年版队列的使用】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/639/detail/10474


队列的使用

内容介绍

一、两个类型的q

二、队列的使用

 

一、有两个类型的q

import multiprocessing, queue

q1=multiprocessing. Queue()   #进程间通信

q2=queue.Queue            #线程间通信

 

二、队列的使用

1.#创建队列时,可以指定最大长度,默认值是0,表示不限

代码:

q=multiprocessing. Queue(5)

q.put(hello)

q.put(good)

q.put(yes)

q.put(ok)

q.put(hi)

运行时没有报错,直接放进去了。

2.再加一个q.put(how)

q.put(how) #无法放进去

运行没有结束,但是长度是5q.put(how)就放不进去了,它是阻塞的,在等待,等到有一个数据取出去了。要有个多任务来处理,再有个进程往外取。

3.print(q.full())

代码:

q=multiprocessing. Queue(5)

q.put(hello)

q.put(good)

q.put(yes)

q.put(ok)

q.put(‘hi)

print(q.full())  #判断是否满了

运行结果:True

4.block=True

如果往队列里放how

block=True:表示是阻塞,如果队列已经满了,就等待。

5.time.out

表示超时,等待多久以后程序会出错,单位是秒。

代码:

q=multiprocessing. Queue(5)

q.put(hello)

q.put(good)

q.put(yes)

q.put(ok)

q.put(hi)

q.put(how,block=True, timeout=5)

运行结果:等了一会,放不进去就会崩。

6.q.put_nowait(how)  

#等价于q.put(how,block=False)

Block=False就是不再等待,放不进去就崩。

7.print(q.get())就是拿出来

代码:

q=multiprocessing. Queue(5)

q.put(hello)

q.put(good)

q.put(yes)

q.put(ok)

q.put(hi)

print(q.get())

print(q.get())

print(q.get())

print(q.get())

print(q.get())

运行结果:

hello

good

yes

ok

hi

现在拿完了再拿,再加一个print(q.get()),运行结果同上但最后一个拿不到了,但是代码没有停,它也是阻塞的。就像是去面包店买面包,卖到第十个卖完了,你是第十一个,你在那等。

8.get也能设置超时

代码:

q=multiprocessing. Queue(5)

q.put(hello)

q.put(good)

q.put(yes)

q.put(ok)

q.put(hi)

print(q.get())

print(q.get())

print(q.get())

print(q.get())

print(q.get())

q.get(block=True, timeout=10)

运行结果:拿到了前五个,但是再等10s没拿到就会报错,出现 Empty 的错误。

9. q.get_nowait()

代码:

q=multiprocessing. Queue(5)

q.put(hello)

q.put(good)

q.put(yes)

q.put(ok)

q.put(hi)

print(q.get())

print(q.get())

print(q.get())

print(q.get())

print(q.get())

q.get_nowait()

运行结果:取完hellogoodyesokhi后立马崩。

一般情况下,队列里拿东西就用get,一边放一边拿要用多任务,多进程或多线程。这些都作为底层知识来了解,包括接下来讲的服务器手写,大家到时候会觉得有些难,但是以后写服务器都是会用框架写的,不可能手写。

相关文章
|
8月前
队列的实现
队列的实现
|
C++
c++ 队列
队列的数据结构
45 0
|
C语言
【Leetcode】队列实现栈和栈实现队列
【Leetcode】队列实现栈和栈实现队列
74 0
队列的实现(下)
队列的实现(下)
RabbmitMQ学习笔记-死信队列
RabbmitMQ学习笔记-死信队列
66 0
|
存储
什么是队列,如何实现?
什么是队列,如何实现?
117 0
什么是队列,如何实现?
|
存储
队列的使用
队列的使用
82 0
|
存储
队列?是你了解的这样吗?
队列?是你了解的这样吗?
113 0
队列?是你了解的这样吗?
|
消息中间件 RocketMQ 开发者
死信队列介绍|学习笔记
快速学习死信队列介绍
死信队列介绍|学习笔记

热门文章

最新文章