python 使用多线程创建一个Buffer缓存器的实现思路


Posted in Python onJuly 02, 2020

这几天学习人脸识别的时候,虽然运行的没有问题,但我却意识到了一个问题

在图片进行传输的时候,GPU的利用率为0

也就是说,图片的传输速度和GPU的处理速度不能很好衔接

于是,我打算利用多线程开发一个buffer缓存

实现的思路如下

定义一个Buffer类,再其构造函数中创建一个buffer空间(这里最好使用list类型)

我们还需要的定义线程锁LOCK(数据传输和提取的时候会用到)

因为需要两种方法(读数据和取数据),所以我们需要定义两个锁

实现的代码如下:

#-*-coding:utf-8-*-
import threading 

class Buffer:

  def __init__(self,size):
    self.size = size
    self.buffer = []
    self.lock = threading.Lock()
    self.has_data = threading.Condition(self.lock) # small sock depand on big sock
    self.has_pos = threading.Condition(self.lock)
  def get_size(self):
    return self.size
  def get(self):
    with self.has_data:
      while len(self.buffer) == 0:
        print("I can't go out has_data")
        self.has_data.wait()
        print("I can go out has_data")
      result = self.buffer[0]
      del self.buffer[0]
      self.has_pos.notify_all()
    return result
  def put(self, data):
    with self.has_pos:
      #print(self.count)
      while len(self.buffer)>=self.size:
        print("I can't go out has_pos")
        self.has_pos.wait()
        print("I can go out has_pos")
      # If the length of data bigger than buffer's will wait
      self.buffer.append(data)
      # some thread is wait data ,so data need release
      self.has_data.notify_all()
  
if __name__ == "__main__":
	buffer = Buffer(3)
	def get():
	  for _ in range(10000):
	    print(buffer.get())
	    
	def put():
	  a = [[1,2,3,4,5,6,7,8,9],[1,2,3,4,5,6,7,8,9],[1,2,3,4,5,6,7,8,9]]
	  for _ in range(10000):
	    buffer.put(a)
  th1 = threading.Thread(target=put)
  th2 = threading.Thread(target=get)
  th1.start()
  th2.start()
  th1.join()
  th2.join()

python 使用多线程创建一个Buffer缓存器的实现思路

总结

到此这篇关于python 使用多线程创建一个Buffer缓存器的文章就介绍到这了,更多相关python 多线程Buffer缓存器内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python爬虫常用的模块分析
Aug 29 Python
python 限制函数调用次数的实例讲解
Apr 21 Python
python 获取字符串MD5值方法
May 29 Python
使用Python更换外网IP的方法
Jul 09 Python
python3 实现的对象与json相互转换操作示例
Aug 17 Python
Python环境Pillow( PIL )图像处理工具使用解析
Sep 12 Python
PYcharm 激活方法(推荐)
Mar 23 Python
Python实现从N个数中找到最大的K个数
Apr 02 Python
win7上tensorflow2.2.0安装成功 引用DLL load failed时找不到指定模块 tensorflow has no attribute xxx 解决方法
May 20 Python
新手学习Python2和Python3中print不同的用法
Jun 09 Python
基于Python实现简单学生管理系统
Jul 24 Python
Python+Opencv身份证号码区域提取及识别实现
Aug 25 Python
浅谈keras中的keras.utils.to_categorical用法
Jul 02 #Python
Python使用OpenPyXL处理Excel表格
Jul 02 #Python
解决keras GAN训练是loss不发生变化,accuracy一直为0.5的问题
Jul 02 #Python
解决keras,val_categorical_accuracy:,0.0000e+00问题
Jul 02 #Python
如何基于Python爬取隐秘的角落评论
Jul 02 #Python
keras中epoch,batch,loss,val_loss用法说明
Jul 02 #Python
Python使用tkinter实现摇骰子小游戏功能的代码
Jul 02 #Python
You might like
PHP安装攻略:常见问题解答(三)
2006/10/09 PHP
Yii学习总结之安装配置
2015/02/22 PHP
Win7下手动安装apache2.2、php5.4笔记
2015/04/03 PHP
php简单操作mysql数据库的类
2015/04/16 PHP
laravel 框架结合关联查询 when()用法分析
2019/11/22 PHP
PHP设计模式之建造者模式(Builder)原理与用法案例详解
2019/12/12 PHP
PHP程序员必须知道的两种日志实例分析
2020/05/14 PHP
用javascript实现点击链接弹出"图片另存为"而不是直接打开
2007/08/15 Javascript
Javascript:为input设置readOnly属性(示例讲解)
2013/12/25 Javascript
搭建pomelo 开发环境
2014/06/24 Javascript
javascript实现获取cookie过期时间的变通方法
2014/08/14 Javascript
Javascript 读取操作Sql中的Xml字段
2014/10/09 Javascript
实例详解Nodejs 保存 payload 发送过来的文件
2016/01/14 NodeJs
Javascript中匿名函数的调用与写法实例详解(多种)
2016/01/26 Javascript
jQuery实现的选择商品飞入文本框动画效果完整实例
2016/08/10 Javascript
node.js版本管理工具n无效的原理和解决方法
2016/11/24 Javascript
JS中使用textPath实现线条上的文字
2017/12/25 Javascript
JavaScript异步加载问题总结
2018/02/17 Javascript
使用Vue.js和Element-UI做一个简单登录页面的实例
2018/02/23 Javascript
Vue监听事件实现计数点击依次增加的方法
2018/09/26 Javascript
js实现json数组分组合并操作示例
2019/02/12 Javascript
利用Electron简单撸一个Markdown编辑器的方法
2019/06/10 Javascript
vue 实现购物车总价计算
2019/11/06 Javascript
javascript如何使用函数random来实现课堂随机点名方法详解
2020/07/28 Javascript
Python中为feedparser设置超时时间避免堵塞
2014/09/28 Python
Django基础知识 URL路由系统详解
2019/07/18 Python
Python assert语句的简单使用示例
2019/07/28 Python
python爬虫 基于requests模块发起ajax的get请求实现解析
2019/08/20 Python
python中with语句结合上下文管理器操作详解
2019/12/19 Python
Python基于class()实现面向对象原理详解
2020/03/26 Python
澳大利亚领先的睡衣品牌:Peter Alexander
2016/08/16 全球购物
有机婴儿毛毯和衣服:Monica + Andy
2020/03/01 全球购物
大学军训感言
2014/01/10 职场文书
放飞梦想演讲稿200字
2014/08/26 职场文书
《祁黄羊》教学反思
2016/02/20 职场文书
开学第一周日记(三篇范文)
2019/08/23 职场文书