'''
同步队列
put方法和task_done方法,
queue有一个未完成任务数量num,put依次num+1,
task依次num-1.任务都完成时任务结束。 1.创建一个 Queue.Queue() 的实例,然后使用数据对它进行填充。
2.将经过填充数据的实例传递给线程类,后者是通过继承 threading.Thread 的方式创建的。
3.每次从队列中取出一个项目,并使用该线程中的数据和 run 方法以执行相应的工作。
4.在完成这项工作之后,使用 queue.task_done() 函数向任务已经完成的队列发送一个信号。
5.对队列执行 join 操作,实际上意味着等到队列为空,再退出主程序。 ''' import threading
import queue
import time
import random class myThread(threading.Thread):
def __init__(self, index, queue):
threading.Thread.__init__(self)
self.index = index
self.queue = queue def run(self):
while True:
time.sleep(1)
item = self.queue.get()
if item is None:
break
print("序号:", self.index, "任务:", item, " 完成")
# task_done方法使得未完成的任务数量-1
self.queue.task_done() q = queue.Queue(0) # 初始化函数接受一个数字来作为该队列的容量,如果传递的是
# 一个小于等于0的数,那么默认会认为该队列的容量是无限的. for i in range(2):
# 两个线程同时完成任务
myThread(i, q).start() for i in range(10):
# put方法使得未完成的任务数量+1
q.put(i)

  

最新文章

  1. ILJMALL project过程中遇到Fragment嵌套问题:IllegalArgumentException: Binary XML file line #23: Duplicate id
  2. python 单步调试初探(未完待续)
  3. 用户体验学习笔记(工程中发现的PM常犯错误)
  4. Linq to Sql 聚合查询
  5. js会员头像上传拖动处理头像类
  6. C#检测驱动是否安装的问题
  7. UIButton的常用属性
  8. GIT:本地有更改,但强制作远程仓库里作更新
  9. 【puthon基础】之str类字符串
  10. Assert中的静态方法
  11. 一起来学linux:SSH远程登陆
  12. 读懂源码:一步一步实现一个 Vue
  13. 基于open62541的opc ua 服务器开发实现(1)
  14. linux下安装与配置Redis
  15. css 初始化样式
  16. sql server 性能调优之 CPU消耗最大资源分析1 (自sqlserver服务启动以后)
  17. IDEA整合Junit测试框架
  18. nginx防攻击的简单配置
  19. maven 解决jar冲突
  20. python 某个目录下的所有文件列表

热门文章

  1. Java之旅(1)—Class类
  2. ArcGIS 教程:Workflow Manager 高速浏览
  3. 卸载MySQL 5.0
  4. HDU 5319 Painter(枚举)
  5. 如何在其他js 引入main.js 中 vue 的实例?
  6. linux一些硬件详情查看的高级方法(网卡,内存,硬盘,cpu)
  7. AVAudioSessionCategory的选择
  8. ppt五种经典字体组合
  9. C# oracle 参数传递的多种方式 留着复习
  10. POJ1664 计数 DP