Python多线程与多进程
自我理解 简单的说:进程就是运行着的程序。
我们写的python程序(或者其他应用程序比如画笔、qq等),运行起来,就称之为一个进程
在windows下面打开任务管理器,里面显示了当前系统上运行着的进程。可以看到,我们系统中有很多的进程运行着,比如qq、搜狗输入法等。这些程序还没有运行的时候,它们的程序代码文件存储在磁盘中,就是那些扩展名为 .exe 文件。双击它们,这些 .exe 文件就被os加载到内存中,运行起来,成为进程
而系统中每个进程里面至少包含一个 线程 。线程是操作系统创建的,每个线程对应一个代码执行的数据结构,保存了代码执行过程中的重要的状态信息。没有线程,操作系统没法管理和维护 代码运行的状态信息。所以没有创建线程之前,操作系统是不会执行我们的代码的。
我们前面写的Python程序,里面虽然没有创建线程的代码,但实际上,当Python解释器程序运行起来(成为一个进程),OS就自动的创建一个线程,通常称为主线程,在这个主线程里面执行代码指令。当解释器执行我们python程序代码的时候。 我们的代码就在这个主线程中解释执行。
现代计算机上面,CPU是 ...
Python数据可视化Seaborn
Reference:https://zhuanlan.zhihu.com/p/49035741
- 为什么用 Seaborn -
Seaborn 是基于 Python 且非常受欢迎的图形可视化库,在 Matplotlib 的基础上,进行了更高级的封装,使得作图更加方便快捷。即便是没有什么基础的人,也能通过极简的代码,做出具有分析价值而又十分美观的图形。
Seaborn 可以实现 Python 环境下的绝大部分探索性分析的任务,图形化的表达帮助你对数据进行分析,而且对 Python 的其他库(比如 Numpy/Pandas/Scipy)有很好的支持。
- Seaborn 绘图上手 -
安装 Matplotlib, Seaborn
pip install matplotlibpip install seaborn
先来一段基本的代码:
import seaborn as sns # 导入绘图模块import matplotlib.pyplot as plt%matplotlib inline # 这里的 “%matplot inline” 是为了在 ...
python实现UDP通信
# UDP传输字符串import socketimport timetx_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)tx_socket.bind(("192.168.233.65", 7070))rx_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)rx_socket.bind(("192.168.233.65", 9090))start_time = time.time()tx_socket.sendto("Jiahong is cool!" .encode("utf-8"), ("192.168.233.65", 9090))rec = rx_socket.recvfrom(65536)[0].decode("utf-8")stop_time = time.time()print((stop_ ...
Python程序耗时计算
时间戳相减 在代码执行前后各记录一个时间点,两个时间戳相减即程序运行耗时
获取时间戳time.time()
import timestart_time = time.time()sum = 0for i in range(100000000): sum += iprint(sum)end_time = time.time()print("耗时: {:.2f}秒".format(end_time - start_time))输出:4999999950000000耗时: 10.53秒
获取当前日期 datetime.datetime.now()
import datetimestart_time = datetime.datetime.now()sum = 0for i in range(100000000): sum += iprint(sum)end_time = datetime.datetime.now()print("耗时: {}秒".format(end_time - sta ...
python读写文件
常用的Python读写文件写法:
with open('{}SNR.txt'.format(SNR), 'a') as f: # with方式打开的文件自动删除 f.write('12.3')with open('1.txt', 'r') as f: a = f.read() print(float(a)) print(type(float(a)))
1.文件对象 在python中用open()可以创建一个文件对象。 open()使用方法:
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
参数说明: file: 必需,文件路径(相对或者绝对路径)。 mode: 可选,文件打开模式 (常用) buffering: 设置缓冲 encoding: 一般 ...
信道编码和交织
信道编码的引入主要是为了解决数据在信道中传输时引入的误码问题。解决误码问题有两个办法:前向纠错、后向纠错。
一.FEC(Forward erro correction)1.重复码
将每一个信息比特重复3次编码:0→000,1→111。 接收端根据少数服从多数的原则进行译码。 传输效率低
2.分组码
为了提高传输效率,将k位信息比特分为一组,增加少量多余码元,共计n位,这就是分组码。 包含k位信息比特的n位分组码,一般记为(n,k)分组码,如图5所示。
奇偶校验码:只能查错(奇数个错误)不能纠错 汉明码:可检测两位错误,纠正一位错误 检错原理:如(7,4)汉明码 s2=a6⊕a5⊕a4⊕a2 s1=a6⊕a5⊕a3⊕a1 s0=a6⊕a4⊕a3⊕a0 根据计算结果s2s1s0,可以判断出是否出错,如果出错,具体是哪个码元出错, 纠错原理:发现错误位后将其取反3.卷积码
编码原理:(1)编码器工作原理 用(n,k,K)来表示卷积码,其中: n:编码器每次输出的码元个数; k:编码器每次输入的信息码元个数,一 ...
图像特征检测和描述
项目原因,需要对图像特征进行检测,以前在学习opencv时就知道有一些常用的特征检测算法,但因为时间久远,重新了解并简单记录一下。因为对特征检测的要求并不高,因此主要关于传统特征检测方法,且主要关于SIFT。
特征检测与描述 特征:局部图像特征(也称为感兴趣点、关键点、突出点)被定义为一个具体的pattern不同于周围邻近的像素,通常关联着一个或多个图像的属性。这样的属性包括但不限于边缘edges、角点corners、区域regions。
描述符:描述符term detector指的是能够使用高维特征向量描述特征点的算法/技术。
介绍 SIFT(Scale-Invariant Feature Transform):尺度不变特征转换。相比角点检测算法Harris和shi-tomas,SIFT算法具有角度和尺度不变性,不论平移、旋转、缩放、亮度和噪声对特征点检测没有影响,而且计算准确,速度快。
优势:获取大量的图片特征信息对于物体识别来说是至关重要的,SIFT能够生成大量的特征,它们密集的覆盖了整个图像的尺度和位置,例如,对于一个500*500像素的图片将能够产生 ...
图片类型转换
前言 在计算机视觉任务中,大多数时候都涉及到图片的加载、训练以及训练结果的可视化。在实操过程中,经常会遇到图片各种类型之间的转换问题
三种类型PIL、tensor、numpy,一种显示plt
图片的读入 通常是有两种读入方式,分别是用PIL中的Image读入和用openCV读入。PIL(Python Imaging Library)是Python中最基础的图像处理库,OpenCV是一个很强大的图像处理库,适用面更广。两种读入方式是有区别的,主要有以下几个区别
图片格式不同,Image读入的是“RGB”,Opencv读入的是“BGR”。
读入图片的尺寸不同,Image读入的是 w h,Opencv读入的是h w c。其中w是宽,h是高,c是通道数。
Image读入是Image类无法直接显示其像素点的值(可以转换成numpy显示),Opencv读入的直接是numpy的格式。可以直接显示其像素值。
代码演示import os.pathfrom PIL import Imageimport cv2import numpy as npimport matplotlib.pyplot ...
Git代理
当您在克隆或从远程仓库获取数据时,很可能因为网络状况不佳遇到很慢甚至超时的情况,那么此时您可能需要配置 Git 的代理。
Git 支持的传输协议以及判断(点击展开)在此之前需要先提一下,Git 支持的传输协议有 ssh、git、http 和 https 协议(此外,ftp 和 ftps 也可用于拉取,但在 Git 官方文档中提到是低效且过时的,不建议使用)。其原生传输协议(即 git:// URL)不做鉴权,在不安全的网络环境下应谨慎使用。要如何分辨 Git 使用的传输协议呢?可以通过 Git URL 来进行判断:sshssh://[user@]host.xz[:port]/path/to/repo.git/ 或 [user@]host.xz:path/to/repo.git/gitgit://host.xz[:port]/path/to/repo.git/http / httpshttp[s]://host.xz[:port]/path/to/repo.git/ftp / ftpsftp[s]://host.xz[:port]/path/to/repo. ...
毕业设计:嵌入式平台的目标检测-5
目前进展 使用PySide2写了图形化界面,目前只修改了一点bug,基本能保证软件的流畅运行,几个注意点:
界面更新在主线程中进行,更新的数据在QThread线程中获得,切忌在python的线程中,否则会导致界面卡死,QThread使用方法见下
当主界面存在两个QLabel,需要显示两张图时,第二张图会对第一张产生影响,需要为每个QLabel添加box边框并且设置sizepolicy为ignore
使用访问本地文件浏览器时,如果卡死,可以使用和本地浏览器不同的浏览器
别在虚拟环境中pyinstaller,会导致虚拟环境直接G!很难受,重新搞环境
# Qthread使用方法import timeimport sysfrom PyQt5.QtWidgets import QApplicationfrom gui.mainwindow import MainWindowfrom PyQt5.QtWidgets import QMainWindowfrom PyQt5.QtCore import QThread, pyqtSignalfrom .ui_mainwindow import ...