python垃圾回收机制
python的垃圾回收采用的是引用计数机制为主和分代回收机制为辅的结合机制,当对象的引用计数变为0时,对象将被销毁。除了解释器默认创建的对象外。(默认对象的引用计数永远不会变成0)
123import sysa = 23sys.getrefcount(a)
查看一个对象的引用计数: sys.getrefcount() 总是会比实际+1 ,因为 sys.getrefcount() 本身也调用了它一次
引用计数被+1的情况:
对象被创建
对象被引用
对象被作为参数,传入到一个函数中
对象作为一个元素,存储在容器中
引用计数被-1的情况:
对象的别名被赋予新的对象
对象的别名被显式销毁
一个对象离开它的作用域
对象所在的容器被销毁,或从容器中删除对象
垃圾回收
被引用为0时,立即回收当前对象
达到了垃圾回收的阈值,触发标记-清除
手动调用gc.collect() 需要import gc
Python虚拟机退出的时候
Python代码整理
代码布局
使用PEP8(pip install pycodestyle)
1). 缩进统一使用4个空格
2). 行最大长度为79,没有代码块的注视行最大字符72
有括号的换行,直接回车,以加号等计算符分割,将符号放在第二行并与第一行括号对其
注释不超过72的使用 ’\‘进行换行,并与第一行的括号对其
3). 插入空行
函数之间,倒入模块与函数之间
4). import模块
推荐单行导入,import os, import sys,不要使用imort os, sys
from utils import request, parse这种例外
倒入模块通常位于文档说明的下方,全局变量的上方。
避免通配符的导入,可能会与已有命名空间的命名冲突,from numpy import *
5). 表达式和语句中的空格
避免使用无关的空格:紧跟在小中大括号后、紧贴在逗号,分号,冒号前、紧贴在函数参数的左括号之前。
函数中的默认参数或自定义中的等号无需空格,如encoding=‘utf-8’,step=5
二元运算符两边各加一个空格,二元运算符包括(赋值,增量赋值+=,-=,比较,布尔)
...
【Python-dataframe】excel简单操作
经常有需要用python脚本去处理excel做统计工作,那么pandas为统计工作的首选。下面来看下dataframe的简单操作。
获取指定行、列
12row = df.iloc[3, :] # 获取第4行column = df.iloc[:, 3] # 获取第4列
获取dataframe坐标值
1value = data.iat[0,5] # dataframe.iat[0,0]开始
行 or 列拼接
1nc_df = pd.concat([gt_defect, infer_defect], axis=0) # 垂直拼接gt_defect列 和 infer_defect列
去重,去空
12nc = df.drop_duplicates().dropna() # 去重, 去空, df为某一列# nc = np.array(nc).tolist() # dataframe --> list
从df中筛选出a列中包含string的所有行(不包含空行), return dataframe
12data = df[df['a'].str.contains( ...
VScode远程连接linux服务器
连接服务器两种情况: 一种直接通过ip,另一种是通过跳板机连接。下面对两种情况分别说明
通过ip连接服务器
安装插件Remote-SSH,配置Remote-SSH。
安装完Remote-SSH以后左侧会出现一个远程资源管理的图标,选择SSH Targets,进入config配置文件
或者点击vscode左下角的’><‘绿色按钮,然后选择Connect to Host,然后点击Configure SSH Hosts... ,点击/home/$USER/.ssh/config(没有的话,按照这个路径新建一个config),将下面config文件内容添加上去,并修改成自己的账号,保存。再点击左下角’><'绿色按钮,点击Connect to Host… ,选择刚刚输入的ip,输入密码即可连接。
config文件内容为
1234Host nickname HostName 192.168.1.1 User zhangsan Port 7890
其中nickname为要连接服务器的昵称,HostName为ip,user改为服务器用户名,Port后为端口 ...
手写数字mnist识别---手撸网络层入门
本文使用Tensorflow1.14.0搭建超简单的网络进行mnist手写体识别。第一节代码片段讲解,第二节附完整代码。尊重原文----原文连接。
代码片段讲解
首先,导入依赖的两个模块,一个是tensorflow,另一个是tensorflow.keras.datasets,我们要的数据集MNIST就是由这个datasets管理下载的。该网址中列出了datasets管理的所有数据集。
1234import tensorflow as tftf.enable_eager_execution()from tensorflow.keras import datasetsimport time
导入数据集,用(x,y)存储训练图片和标签,用(val_x,val_y)存储测试图片和标签。
1(x, y), (val_x, val_y) = datasets.mnist.load_data()
在导入后,需要对数据形式进行初步查看,对于图像识别来说,图片的数量、大小、通道数量和数据范围、类型是必须了解的。以一下程序打印出这些信息,注释为输出结果。datasets导出的数据是Numpy数组,类型为u ...
Ubuntu22.04系统安装
Ubuntu系统安装教程
准备工作
本文以Ubuntu18.04安装为例,准备工作在win10上进行。
下载Ubuntu镜像
下载地址,进入页面后点击右边的Download按钮开始下载。
制作U盘启动
安装制作工具:UltraISO,下载完成后安装
插入用来做启动盘的U盘(最好是usb3.0接口,16GB或以上)
打开安装好的UltraISO,点击继续试用
进入工作界面后,点击文件-打开,选择下载好的镜像。
点击菜单栏启动-写入硬盘映像
弹出的窗口中
硬盘驱动器:选择刚刚插入的U盘
写入方式:设置为USB-HDD+
其他采用默认->格式化->写入
返回,制作完成
安装Ubuntu18.04
设置启动项
关闭你要安装的主机,插入启动盘,接着开机,按住 F2直到进入 bios 界面(不同的电脑进入 bios 的按键不同,一般为Delete 键),通过方向键选择Boot Menu,然后回车
进入Boot Manager后,选择 EFI USB 作为启动项,回车
至此我们就进入了安装程序,选择 Install Ubuntu, 回车直接安装
正式安装
选择语言
选择键盘
连接无 ...
docker的安装与使用
概念介绍
image:镜像就是个包,是个死的东西。相当于python包。
container:把image启动了你就获得了一个独立的容器, 进入这个启动的容器就相当于一个conda 环境了。
安装
查看系统版本
12345678910111213$ cat /etc/os-releaseNAME="Ubuntu"VERSION="18.04.5 LTS (Bionic Beaver)"ID=ubuntuID_LIKE=debianPRETTY_NAME="Ubuntu 18.04.5 LTS"VERSION_ID="18.04"HOME_URL="https://www.ubuntu.com/"SUPPORT_URL="https://help.ubuntu.com/"BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"PRIVACY_POLICY_URL="https://www.u ...
Shell常用命令
shell常用命令
基本指令
Shell里0为True,0以外为False
1234567891011121314str='text' # 定义常量var=`find . -name '*.s3cfg'` # 讲shell指令执行结果赋值给变量find . -name '*[09,10].jpg' # 查看当前目录下09.jpg和10.jpg结尾的文件ls |egrep '*09.jpg|*10.jpg' # 查看当前目录下09.jpg和10.jpg结尾的文件val=`expr 2+2`echo "两数之和为: $val" # shell基本运算== # 连按,自动缩进,5==:当前行向后5行同时缩进[ ! $a ] ...
python脚本打包成so或pyd文件
As everyone knows,Python is an interpreted language. If you don’t want to show your code to others, you can compile Python source code to generate a .pyd library file (for Windows) or a .so library file (for Linux).
Windows python to .pyd
Suppose you now have a test.py
123# test.pydef add(a, b): return a+b
Now you want to compile the test.py into a pyd file. Create a new setup.py as follows:
12345# setup.pyfrom distutils.core import setupfrom Cython.Build import cythonizesetup(name='test ...
Linux常用命令
Tmux
12345678910111213141516171819202122232425pip install tmux # 安装tmuxtmux new -s <name-of-my-session> # 创建新的sessiontmux a -t <name-of-my-session> # 进入sessiontmux ls # 查看列表ctrl+b s # 会话间切换ctrl+b % # 左右切割窗口ctrl+b " # 上下切割窗口ctrl+b ⬅️/➡️ # 切换分割窗口ctrl+b+⬅️/➡️ ...
Linux自动挂载磁盘
如果在Ubuntu系统中加装了新硬盘,并且在终端输入df -h命令后看不到新硬盘,这通常意味着硬盘尚未被挂载。以下是加载新硬盘的一般步骤:
查看系统硬盘
查看硬盘是否被系统识别
1234# 显示所有可用的存储设备及其分区:sudo fdisk -l# 显示新硬盘lsblk -f
挂载硬盘
1.创建挂载点
创建一个目录来作为硬盘的挂载点。例如,创建一个名为/mnt/data的目录
1sudo mkdir /mnt/data
2.格式化硬盘(如果需要)
如果硬盘是全新的,可能需要先进行格式化。选择一个文件系统类型对硬盘进行格式化,例如使用ext4:
12# 其中/dev/sdx1应替换为你的硬盘设备名。sudo mkfs.ext4 /dev/sdx1
3.挂载硬盘
12# 同样,/dev/sdx1应替换为你的硬盘设备名。sudo mount /dev/sdx1 /mnt/data
自动挂载硬盘
如果你希望每次启动系统时自动挂载硬盘,需要编辑/etc/fstab文件:
1vim /etc/fstab
里边长这样子:
12345678910111213# /etc/fstab: static ...
YOLOX训练自己的数据集(coco格式)
这里记录一下将yolox用于训练自己的数据集(coco格式),这里yolox的github地址
Environment
123456conda create -n yolox python=3.8conda activate yoloxpip install torch==1.8cd yoloxpip install -r requirements.txtpython setup.py develop
Install pycocotools
1234git clone https://github.com/cocodataset/cocoapicd cocoapi/PythonAPI/# cd pycocotools-2.0.2python setup.py build_ext install
Pretrained Model
Download the latest pre-trained weights and place them under the project yolox.
Test Demo
1python tools/demo.py image -f exps/defau ...