def

树莓派上使用 LCD1602 显示状态

谁说胖子不能爱 提交于 2021-01-05 08:19:13
手头有一块 LCD1602显示屏,于是尝试着用树莓派控制它的显示。网上直接找到现成的例子,操作成功,在此记录。 树莓派版本:Model 3B+ 树莓派系统:Raspbian Stretch with desktop and recommended software,April 2019 参考资料 :《 树莓派+LCD1602实现系统监控: IP/时钟/温度/内存 》。 在树莓派电源关闭时,根据参考资料中的连接方式(截图如下)连接树莓派、LCD显示屏和电位器,因为很多引脚需要连接正负极,树莓派上没有足够多的5v,所以我用了一个面包板。 连接好后如下图所示。我的线太长了,显得有些乱,大家接线的时候小心短路。 树莓派开机。 LCD 显示屏就会亮,但没有显示内容。 将参考资料中的两个 python 文件保存至树莓派中的同一文件夹下,长文件命名为1602led.py,短文件命名为1602.py。代码如下,点击+展开: # !/usr/bin/python # # based on code from lrvick and LiquidCrystal # lrvic - https://github.com/lrvick/raspi-hd44780/blob/master/hd44780.py # LiquidCrystal - https://github.com/arduino

Django-----ORM

五迷三道 提交于 2021-01-05 08:07:47
                              ORM介绍 一、ORM概念   对象关系映射模式是一种为了解决面向对象与关系数据库的互不匹配的现象技术 简单的说,ORM是通过使用描述对象和数据之间的映射元数组,将程序中的对象自动持久化到关系数据库中。 ORM在业务逻辑层和数据库层之间充当着桥梁的作用。 二,ORM的由来 让我们从O/R开始。字母O起源于"对象"(Object),而R则来自于"关系"(Relational)。 几乎所有的软件开发过程中都会涉及到对象和关系数据库。在用户层面和业务逻辑层面,我们是面向对象的。当对象的信息发生变化的时候,我们就需要把对象的信息保存在关系数据库中。 按照之前的方式来进行开发就会出现程序员会在自己的业务逻辑代码中夹杂很多SQL语句用来增加、读取、修改、删除相关数据,而这些代码通常都是重复的。 三、ORM的优势 ORM解决的主要问题是对象和关系的映射。它通常把一个类和一个表一一对应,类的每个实例对应表中的一条记录,类的每个属性对应表中的每个字段。 ORM提供了对数据库的映射,不用直接编写SQL代码,只需像操作对象一样从数据库操作数据。 让软件开发人员专注于业务逻辑的处理,提高了开发效率。 四、ORM的劣势 ORM的缺点是会在一定程度上牺牲程序的执行效率。 ORM用多了SQL语句就不会写了,关系数据库相关技能退化.. 五、ORM的总结

Django学习笔记之CBV和FBV

半腔热情 提交于 2021-01-05 08:06:29
FBV FBV(function base views) 就是在视图里使用函数处理请求。 在之前django的学习中,我们一直使用的是这种方式,所以不再赘述。 CBV CBV(class base views) 就是在视图里使用类处理请求。 Python是一个面向对象的编程语言,如果只用函数来开发,有很多面向对象的优点就错失了(继承、封装、多态)。所以Django在后来加入了Class-Based-View。可以让我们用类写View。这样做的优点主要下面两种: 提高了代码的复用性,可以使用面向对象的技术,比如Mixin(多继承) 可以用不同的函数针对不同的HTTP方法处理,而不是通过很多if判断,提高代码可读性 使用class-based views 如果我们要写一个处理GET方法的view,用函数写的话是下面这样。 from django.http import HttpResponse def my_view(request): if request.method == ' GET ' : return HttpResponse( ' OK ' ) 如果用class-based view写的话,就是下面这样 from django.http import HttpResponse from django.views import View class MyView(View):

flask 开发接口测试平台

僤鯓⒐⒋嵵緔 提交于 2021-01-05 07:51:59
flask 开发接口测试平台   数据库,forms views 视图,    数据库如下: # encoding: utf-8 ''' @author: lileilei @file: models.py @time: 2017/5/6 19:28 ''' from app import db import datetime from werkzeug.security import generate_password_hash,check_password_hash class User(db.Model): # 用户表 uer_id=db.Column(db.Integer,primary_key=True,autoincrement=True) # 用户id user_name=db.Column(db.String(64)) # 用户名 password=db.Column(db.String(64)) # 用户密码 status= db.Column(db.Integer) level = db.Column(db.Integer) user_zhuce_date =db.Column(db.DateTime,default=datetime.datetime.now()) # 注册时间 user_zhuce_email=db.Column(db.String(64))

Python模块-queue队列模块

陌路散爱 提交于 2021-01-05 01:21:10
队列方法 q = queue.Queue().put() 队列方法 释义 q.put() 存数据 q.get() 获取队列 q.qsize() 队列大小 q.empty() 判断队列是否为空,为空返回True q.full() 判断队列是否已满,已满返回True q.put_nowait() 相当于q.put(block=Flase) q.get_nowait() 相当于q.get(block=Flase) q.task_done() 在完成一项工作后,q.task_done向任务已完成队列发送信号 q.join() 等待队列,接收q.task_done发送的信号 队列优先级 queue.Queue() 先进先出 # -*- coding:utf-8 -*- import queue q = queue.Queue(3) #创建一个空队列 【先进先出】 q.put(1) #往队列中添加值 q.put(2) q.put(3) while 1: data = q.get() print(data) 1 2 3 queue.LifoQueue() 先进后出 # -*- coding:utf-8 -*- import queue q = queue.LifoQueue(3) #创建一个空队列 【先进后出】 q.put(1) #往队列中添加值 q.put(2) q.put(3) while

python3之queue模块

回眸只為那壹抹淺笑 提交于 2021-01-05 00:33:50
queue模块提供了一个多线程安全的先进先出FIFO(first in first out)的数据结构。 1.基本使用 put()放入元素,get()取出元素。 import queue q = queue.Queue() for i in range(5): q.put(i) # 验证队列是否为空 while not q.empty(): print(q.get(), end=" ") 输出: 0 1 2 3 4 2.LIFO队列 与FIFO相反,LIFO是后进后出。 import queue q = queue.LifoQueue() for i in range(5): q.put(i) # 验证队列是否为空 while not q.empty(): print(q.get(), end=" ") 结果: 4 3 2 1 0 3.优先队列 根据元素的特性来决定这些元素的处理顺序。 import queue import functools import threading @functools.total_ordering class Job: def __init__(self, priority, description): self.priority = priority self.description = description print("New job:",

Python并发编程之消息队列补充及如何创建线程池

匆匆过客 提交于 2021-01-04 22:24:59
本文目录 消息队列的先进先出 创建多线程的两种方式 . 消息队列的先进先出 首先,要告诉大家的事,消息队列可不是只有queue.Queue这一个类,除它之外,还有queue.LifoQueue和queue.PriorityQueue这两个类。 从名字上,对于他们之间的区别,你大概也能猜到一二吧。 >本期推送整理了初学者可能会用到的Python资料,含有书籍/视频/在线文档和编辑器/源 代码,关于`Python`的安装qun:850973621 queue.Queue:先进先出队列queue.LifoQueue:后进先出队列queue.PriorityQueue:优先级队列 先来看看,我们的老朋友,queue.Queue。所谓的先进先出(FIFO,First in First Out),就是先进入队列的消息,将优先被消费。这和我们日常排队买菜是一样的,先排队的人肯定是先买到菜。 用代码来说明一下 import queue q = queue.Queue() for i in range(5): q.put(i) while not q.empty(): print q.get() 复制代码 看看输出,符合我们先进先出的预期。存入队列的顺序是01234,被消费的顺序也是01234。 0 1 2 3 4 复制代码 再来看看Queue.LifoQueue,后进先出,就是后进入消息队列的

用PaddlePaddle实现图像分类-MobileNet

折月煮酒 提交于 2021-01-04 17:42:21
项目简介 本项目使用paddle实现图像分类模型 MobileNet-V1网络的训练和预测。MobileNet-V1是针对传统卷积模块计算量大的缺点进行改进后,提出的一种更高效的能够在移动设备上部署的轻量级神经网络,建议使用GPU运行。动态图版本请查看: 用PaddlePaddle实现图像分类-MobileNet(动态图版) 下载安装命令 ## CPU版本安装命令 pip install -f https://paddlepaddle.org.cn/pip/oschina/cpu paddlepaddle ## GPU版本安装命令 pip install -f https://paddlepaddle.org.cn/pip/oschina/gpu paddlepaddle-gpu 模型结构 MobileNet的核心思想是将传统卷积分解为深度可分离卷积与1 x 1卷积。深度可分离卷积是指输入特征图的每个channel都对应一个卷积核,这样输出的特征的每个channel只与输入特征图对应的channel相关,具体的例如输入一个 K×M×NK\times M\times N K × M × N 的特征图,其中K为特征图的通道数,M、N为特征图的宽高,假设传统卷积需要一个大小为 C×K×3×3C\times K\times 3\times 3 C × K × 3 × 3

python实现生产者消费者模型

淺唱寂寞╮ 提交于 2021-01-04 17:21:04
生产者消费之模型就是,比如一个包子铺,中的顾客吃包子,和厨师做包子, 不可能是将包子一块做出来,在给顾客吃,但是单线程只能这麽做, 所以用多线程来执行,厨师一边做包子,顾客一边吃包子, 当顾客少时,厨师做的包子就放在一个容器中,等着顾客来吃, 当顾客多的时候,就从容器中先取出来给顾客吃,厨师继续做包子 用队列来模拟这个容器 1 # 当做完一个包子后就要给顾客发送一个信号,表示已经做完,让他们吃包子 import threading, time, queue q = queue.Queue() def Produce(name): count = 0 # conut表示做的包子总个数 while count < 10 : print ( ' 厨师%s在做包子中... ' % name) time.sleep( 2 ) q.put(count) # 容器中添加包子 # 当做完一个包子后就要给顾客发送一个信号,表示已经做完,让他们吃包子 print ( ' produce%s已经做好了第%s个包子 ' % (name, count)) count += 1 print ( ' oking... ' ) def Consumer(name): count = 0 # count表示包子被吃的总个数 while count < 10 : time.sleep( 2) # 排队去取包子, if

Python多线程笔记(三),queue模块

ε祈祈猫儿з 提交于 2021-01-04 17:20:45
尽管在Python中可以使用各种锁和同步原语的组合编写非常传统的多线程程序,但有一种首推的编程方式要优于其他所有编程方式 即将多线程程序组织为多个独立人物的集合,这些任务之间通过消息队列进行通信 queue模块(在python2中叫Queue)实现了各种多生产者-多消费者队列,可用于在执行的多个线程之间安全地交换信息。 queue模块定义了三种不同的队列类 Queue([maxsize]) 创造一个FIFO(first-in-first-out,先进先出)队列。maxsize是队列中可以放入的项的最大数量,如果省略maxsize 参数或将它置为0,队列大小将为无穷大。 LifoQueue([maxsize]) 创建一个LIFO(last-in-first-out,后进先出)队列(也叫栈) PriorityQueue([maxsize]) 创建一个优先级队列,其中项按照优先级从低到高依次排列。使用这种队列时,项应该是(priority, data)形式的元组, 其中priority是一个数字。 队列类的实例q具有一下方法 q.qsize() 返回队列的正确大小。因为其他线程可能正在更新队列,此方法返回的数字不完全可靠 q.empty() 如果队列为空,返回True,否则返回False q.full() 如果队列已满,返回True,否则返回False q.put(item[,block