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实现动态添加类的属性或成员函数的解决方法
Jul 16 Python
python利用装饰器进行运算的实例分析
Aug 04 Python
python编程开发之日期操作实例分析
Nov 13 Python
tensorflow训练中出现nan问题的解决
Feb 10 Python
利用Python如何实现一个小说网站雏形
Nov 23 Python
python将list转为matrix的方法
Dec 12 Python
python 求某条线上特定x值或y值的点坐标方法
Jul 09 Python
Python 列表去重去除空字符的例子
Jul 20 Python
python实现网站微信登录的示例代码
Sep 18 Python
用python介绍4种常用的单链表翻转的方法小结
Feb 24 Python
Pytorch 如何实现LSTM时间序列预测
May 17 Python
python数字图像处理之图像自动阈值分割示例
Jun 28 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+mysqli实现批量执行插入、更新及删除数据的方法
2015/01/29 PHP
如何用javascript控制上传文件的大小
2006/10/26 Javascript
使用apply方法处理数组的三个技巧[译]
2012/09/20 Javascript
javascript进行数组追加方法小结
2014/06/16 Javascript
jQuery 1.9.1源码分析系列(十)事件系统之主动触发事件和模拟冒泡处理
2015/11/24 Javascript
jquery Deferred 快速解决异步回调的问题
2016/04/05 Javascript
js省市县三级联动效果实例
2020/04/15 Javascript
jQuery基于ID调用指定iframe页面内的方法
2016/07/06 Javascript
Bootstrap组件系列之福利篇几款好用的组件(推荐二)
2016/07/12 Javascript
jQuery+PHP+Mysql实现抽奖程序
2020/04/12 jQuery
微信小程序实现点击按钮移动view标签的位置功能示例【附demo源码下载】
2017/12/06 Javascript
vue 2.1.3 实时显示当前时间,每秒更新的方法
2018/09/16 Javascript
微信小程序实现左右列表联动
2020/05/19 Javascript
详解基于mpvue微信小程序下载远程图片到本地解决思路
2019/05/16 Javascript
基于PHP pthreads实现多线程代码实例
2020/06/24 Javascript
Vue如何跨组件传递Slot的实现
2020/12/14 Vue.js
[03:41]2018完美盛典-《Fight With Us》
2018/12/16 DOTA
python多进程和多线程究竟谁更快(详解)
2017/05/29 Python
浅谈flask中的before_request与after_request
2018/01/20 Python
Python中循环后使用list.append()数据被覆盖问题的解决
2018/07/01 Python
Python中flatten( )函数及函数用法详解
2018/11/02 Python
Python3 批量扫描端口的例子
2019/07/25 Python
Python 可变类型和不可变类型及引用过程解析
2019/09/27 Python
Tensorflow实现多GPU并行方式
2020/02/03 Python
Python模块 _winreg操作注册表
2020/02/05 Python
Python基于gevent实现文件字符串查找器
2020/08/11 Python
python实现计算器简易版
2020/12/17 Python
购买正版游戏和游戏激活码:Green Man Gaming
2019/11/06 全球购物
.net工程师笔试题
2012/06/09 面试题
银行实习生自我鉴定范文
2013/09/19 职场文书
大二自我鉴定范文
2013/10/05 职场文书
应届生求职信写作技巧
2013/10/24 职场文书
敬老文明号事迹材料
2014/01/16 职场文书
留学自荐信写作方法
2014/01/27 职场文书
财政局个人总结
2015/03/04 职场文书
百年校庆感言
2015/08/01 职场文书