队列实现通信
队列实现通信
import queue 创建一个队列
q=queue.Queue(2) 括号内可以传数字,代表最大可以同时存放的数据量,生成队列对象
q.put(111)
q.put(2) 往队列里面存数据
当队列数据放满了之后,程序会阻塞,直到数据腾出位置
v1=q.get()
v2=q.get() 取队列里面的数据
当取数据超出存的值时,不会报错会原地阻塞,队列是先进先出
v3=q.get_nowait() 没有数据直接报错,报:queue.Empty
v4=q.get(timeout=3) 如果没有数据原地等待三秒,之后还没有数据再报错,报错同上一个
q.full() 判断队列里面是否满了
q.empty()判断当前队列是否空了
捕获异常:
try:
v3=q.get(timeout=3)
print (v3)
except Exception as e :
print ('已空')
借助队列实现进程与进程之间的通信
form multiprocessing import Queue,Process
def producer(q): 自己定名
q.put('hello')
def consumer(q):
print (q.get())
if __name__=='__main__':
q=Queue() 队列
p=Process (target=producer,args=(q,)) 线程
p1=Process(target=consumer,args=(q,))
p.start()
p1.start()
print (q.get())
生产者消费者模型
生产者:生产或者制造东西的
消费者:消费或者处理东西的
q=JoinableQueue() 等待完毕 队列能够等待的
每当往队列中存入数据的时候,内部会有一个计数器+1,每当调用task.done()的时候计数器-1
q.task_done()告诉队列你已经从队列里面取出一个数据并且已经处理完毕了
q.join()等待队列中所有的数据被取完再执行往下执行代码,当计数器为0的时候才往后运行
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南