利用Queue对象先进先出的特性,将每个生产者的数据一次存入队列,而每个消费者将依次从队列中取出数据

import threading        # 导入threading模块
import Queue            # 导入Queue模块
class Producer(threading.Thread):# 定义生产者类def __init__(self,threadname):threading.Thread.__init__(self,name = threadname)def run(self):global queue    # 声明queue为全局变量queue.put(self.getName())   # 调用put方法将线程名添加到队列中print self.getName(),'put ',self.getName(),' to queue'
class Consumer(threading.Thread):# 定义消费者类def __init__(self,threadname):threading.Thread.__init__(self,name = threadname)def run(self):global queueprint self.getName(),'get ',queue.get(),'from queue'#调用get方法获取队列中内容
queue = Queue.Queue()   # 生成队列对象
plist = []      # 生成者对象列表
clist = []      # 消费者对象列表
for i in range(10):p = Producer('Producer' + str(i))plist.append(p)     # 添加到生产者对象列表
for i in range(10):c = Consumer('Consumer' + str(i))clist.append(c)     # 添加到消费者对象列表
for i in plist:i.start()       # 运行生产者线程i.join()
for i in clist:i.start()       # 运行消费者线程i.join()
######运行结果######
>>> Producer0 put  Producer0  to queue
Producer1 put  Producer1  to queue
Producer2 put  Producer2  to queue
Producer3 put  Producer3  to queue
Producer4 put  Producer4  to queue
Producer5 put  Producer5  to queue
Producer6 put  Producer6  to queue
Producer7 put  Producer7  to queue
Producer8 put  Producer8  to queue
Producer9 put  Producer9  to queue
Consumer0 get  Producer0 from queue
Consumer1 get  Producer1 from queue
Consumer2 get  Producer2 from queue
Consumer3 get  Producer3 from queue
Consumer4 get  Producer4 from queue
Consumer5 get  Producer5 from queue
Consumer6 get  Producer6 from queue
Consumer7 get  Producer7 from queue
Consumer8 get  Producer8 from queue
Consumer9 get  Producer9 from queue

转载于:https://blog.51cto.com/zeping/1258979

python:threading多线程模块-使用Queue模块保持线程同步相关推荐

  1. Python Threading 多线程编程

    写在篇前   threading模块是python多线程处理包,使用该模块可以很方便的实现多线程处理任务,本篇文章的基础是需要掌握进程.线程基本概念,对PV原语.锁等传统同步处理方法有一定的了解.另外 ...

  2. python threading多线程计算

    本文持续更新- 文章目录 threading 模块 当前运行的线程 例子 threading 模块 当前运行的线程 一个进程可以有多个线程,通过threading模块来实现多线程计算,下面显示当前线程 ...

  3. C#多线程编程系列(三)- 线程同步

    目录 1.1 简介 1.2 执行基本原子操作 1.3 使用Mutex类 1.4 使用SemaphoreSlim类 1.5 使用AutoResetEvent类 1.6 使用ManualResetEven ...

  4. python schedule多线程_Python定时任务sched模块用法示例

    本文实例讲述了Python定时任务sched模块用法.分享给大家供大家参考,具体如下: 通过sched模块可以实现通过自定义时间,自定义函数,自定义优先级来执行函数. 范例一 import time ...

  5. python threading 多线程

    举例: import threadingdef thread_func(x):print('%d\n' % (x*100))threads = [] for i in range(5): #5个线程t ...

  6. APUE学习之多线程编程(二):线程同步

    为了保证临界资源的安全性和可靠性,线程不得不使用锁,同一时间只允许一个或几个线程访问变量.常用的锁有互斥量,读写锁,条件变量 一.互斥量 互斥量是用pthread_mutex_t数据类型表示的,在使用 ...

  7. python模块之Queue

    创建一个"队列"对象 import Queue myqueue = Queue.Queue(maxsize = 10) Queue.Queue类即是一个队列的同步实现.队列长度可为 ...

  8. python多线程下载大文件_Python threading多线程断点下载文件的方法

    这是玩蛇网一篇关于Python多线程下载文件方法的代码实例.文中应用到的python模块和方法有httplib.Python urllib2.Python threading多线程模块.python ...

  9. 多线程编程(1): python对多线程的支持

    python多线程编程(1): python对多线程的支持 前面介绍过多线程的基本概念,理解了这些基本概念,掌握python多线程编程就比较容易了. 在开始之前,首先要了解一下python对多线程的支 ...

最新文章

  1. BusinessFrameWork
  2. matlab光学远轴光的折射,光学课后习题
  3. Java线程 Thread 的6种状态以及转变过程
  4. 如何更新Win11系统网卡驱动
  5. linux下dnw工具安装和使用
  6. OpenCV-计算二维矢量幅值cv::magnitude
  7. 标书导出html,Python爬取比比网中标标书并保存成PDF格式
  8. multisim14
  9. pytorch torchvision 各种版本whl下载地址
  10. vue2.0项目页面字体切换为繁体
  11. C++之类和对象2:消得人憔悴
  12. 并行计算,网格计算与分布式计算的…
  13. 你想要的宏基因组-微生物组知识全在这(1910)
  14. 利用python制作马赛克图
  15. 运维-系统监控方案:基于Grafana的TDengine零依赖监控解决方案
  16. 电子邮箱系统注册哪家好?163邮箱联系人怎么管理?
  17. 好用的工具推荐一下js美化代码
  18. A站 的 Swift 实践 —— 上篇
  19. Introduction to 3D Game Programming with DirectX 11学习笔记 6 Direct3D中的绘制(一)
  20. 浅谈Python+requests+pytest接口自动化测试框架的搭建

热门文章

  1. HDU 4115 Eliminate the Conflict(2-sat)
  2. Geodatabase模型
  3. WCF学习之旅----基础篇之EnterpriseServices
  4. android 打开设备失败
  5. 对Moss 2007中访问群体的设置和使用补充
  6. Windows平台内核级文件访问
  7. Java™ 教程(原子变量)
  8. 解析Node.js通过axios实现网络请求
  9. Maven 国内镜像
  10. Laravel学习笔记四-数据库迁移和模型文件