当前位置: 首页 > news >正文

Python subprocess模块学习总结

Python中,队列是线程间最常用的交换数据的形式。Queue模块是提供队列操作的模块,虽然简单易用,但是不小心的话,还是会出现一些意外。

创建一个“队列”对象
import Queue
q = Queue.Queue(maxsize = 10)
Queue.Queue类即是一个队列的同步实现。队列长度可为无限或者有限。可通过Queue的构造函数的可选参数maxsize来设定队列长度。如果maxsize小于1就表示队列长度无限。

将一个值放入队列中
q.put(10)
调用队列对象的put()方法在队尾插入一个项目。put()有两个参数,第一个item为必需的,为插入项目的值;第二个block为可选参数,默认为
1。如果队列当前为空且block为1,put()方法就使调用线程暂停,直到空出一个数据单元。如果block为0,put方法将引发Full异常。

将一个值从队列中取出
q.get()
调用队列对象的get()方法从队头删除并返回一个项目。可选参数为block,默认为True。如果队列为空且block为True,get()就使调用线程暂停,直至有项目可用。如果队列为空且block为False,队列将引发Empty异常。

Python Queue模块有三种队列及构造函数:
1、Python Queue模块的FIFO队列先进先出。 class Queue.Queue(maxsize)
2、LIFO类似于堆,即先进后出。 class Queue.LifoQueue(maxsize)
3、还有一种是优先级队列级别越低越先出来。 class Queue.PriorityQueue(maxsize)

此包中的常用方法(q = Queue.Queue()):
q.qsize() 返回队列的大小
q.empty() 如果队列为空,返回True,反之False
q.full() 如果队列满了,返回True,反之False
q.full 与 maxsize 大小对应
q.get([block[, timeout]]) 获取队列,timeout等待时间
q.get_nowait() 相当q.get(False)
非阻塞 q.put(item) 写入队列,timeout等待时间
q.put_nowait(item) 相当q.put(item, False)
q.task_done() 在完成一项工作之后,q.task_done() 函数向任务已经完成的队列发送一个信号
q.join() 实际上意味着等到队列为空,再执行别的操作

范例:
实现一个线程不断生成一个随机数到一个队列中(考虑使用Queue这个模块)
实现一个线程从上面的队列里面不断的取出奇数
实现另外一个线程从上面的队列里面不断取出偶数

#!/usr/bin/env python #coding:utf8 import random,threading,time from Queue import Queue #Producer thread class Producer(threading.Thread): def __init__(self, t_name, queue): threading.Thread.__init__(self,name=t_name) self.data=queue def run(self): for i in range(10): #随机产生10个数字 ,可以修改为任意大小 randomnum=random.randint(1,99) print "%s: %s is producing %d to the queue!" % (time.ctime(), self.getName(), randomnum) self.data.put(randomnum) #将数据依次存入队列 time.sleep(1) print "%s: %s finished!" %(time.ctime(), self.getName()) #Consumer thread class Consumer_even(threading.Thread): def __init__(self,t_name,queue): threading.Thread.__init__(self,name=t_name) self.data=queue def run(self): while 1: try: val_even = self.data.get(1,5) #get(self, block=True, timeout=None) ,1就是阻塞等待,5是超时5秒 if val_even%2==0: print "%s: %s is consuming. %d in the queue is consumed!" % (time.ctime(),self.getName(),val_even) time.sleep(2) else: self.data.put(val_even) time.sleep(2) except: #等待输入,超过5秒 就报异常 print "%s: %s finished!" %(time.ctime(),self.getName()) break class Consumer_odd(threading.Thread): def __init__(self,t_name,queue): threading.Thread.__init__(self, name=t_name) self.data=queue def run(self): while 1: try: val_odd = self.data.get(1,5) if val_odd%2!=0: print "%s: %s is consuming. %d in the queue is consumed!" % (time.ctime(), self.getName(), val_odd) time.sleep(2) else: self.data.put(val_odd) time.sleep(2) except: print "%s: %s finished!" % (time.ctime(), self.getName()) break #Main thread def main(): queue = Queue() producer = Producer('Pro.', queue) consumer_even = Consumer_even('Con_even.', queue) consumer_odd = Consumer_odd('Con_odd.',queue) producer.start() consumer_even.start() consumer_odd.start() producer.join() consumer_even.join() consumer_odd.join() print 'All threads terminate!' if __name__ == '__main__': main()
http://www.jsqmd.com/news/710142/

相关文章:

  • 能量模型在机器人策略学习中的优势与应用
  • 基于MCP协议的本地AI应用工具化与记忆增强实践
  • 2026年青岛搬家公司精选推荐:同城 / 长途 / 钢琴 / 工厂搬迁一站式服务 - 海棠依旧大
  • 固件签名验证失效=裸奔上线:从X.509证书链裁剪、ECDSA-P256密钥硬件绑定到BootROM级公钥固化,一套完整防篡改固件开发闭环(含航天某院实测数据)
  • Python实现季节性持续预测:时间序列分析实战
  • 为什么买来的 AI 用了半年反而“变蠢”了:拆解数据飞轮与持续学习闭环
  • AI代码隔离实战指南(生产级Docker Sandbox架构设计全图谱)
  • CogVideoX-2b实战:用英文提示词生成高质量视频的秘诀
  • LangForce框架:视觉语言动作模型的贝叶斯优化
  • VSCode 接入GPT-5.3-codex 大模型配置指南
  • Winhance中文版:终极Windows系统优化工具完全指南 [特殊字符]
  • MAA明日方舟助手:3大核心功能让你告别手动刷图!
  • C语言写传感器驱动的7个致命错误(92%农用IoT项目因第4条返工超3轮)
  • 离散状态空间概率路径建模与TV稳定性分析
  • ArtLLM框架:基于语言模型的3D关节物体生成技术
  • 业务接口脆弱性排查:杜绝恶意请求与低频渗透攻击
  • 企业内部通讯软件是什么?2026 年信创时代的企业数字安全底座
  • 揭秘Copilot Next自动化工作流底层机制:3个核心源码模块解析+4步零误差配置法
  • 终极wxappUnpacker指南:3步掌握微信小程序逆向分析
  • 从汽车到工业:一文搞懂CAN总线的物理层与协议层(附TJA1050芯片接线图)
  • 2026年南通留学机构哪家通过率高:五家优选深度解析 - 科技焦点
  • 突破百度网盘限速:Python直连解析工具实现30倍下载加速终极指南
  • 鸿蒙 Account Kit:静默登录(五)
  • 终极隐私保护!Windows本地实时语音转文字工具全攻略
  • 第三十五天(4.27)
  • NoFences:免费开源桌面分区工具,彻底告别Windows桌面混乱
  • 如何快速掌握麻将AI助手:终极实战指南提升雀魂技巧
  • “人工智能+工业”:JBoltAI智能图检赋能鲁威制造新升级
  • 深度解析专业心理咨询数据集:20,000条中文对话语料实战指南
  • Windows Cleaner:专治C盘爆红及各种不服的终极系统优化方案