Python 定时任务
利用计算机能够帮助我们执行定时定点或者间隔时间段的任务,特别是对于容易遗忘、重复操作、准点执行等任务非常方便。除了在 Linux 上使用 corntab 等完成之外,在 Python 中也可以编程实现定时定点等任务的执行。本篇介绍 time, threading.Timer, schedule, apscheduler 等四个模块。
Time定时 3 秒后,依次执行相同任务 5 次
1234567891011from datetime import datetimeimport timedef showTime(count): time.sleep(count) print(datetime.now().strftime("%Y/%m/%d %H:%M:%S"))# 使用 while 可永久执行for i in range(5): showTime(3)
Threading.Timer定时 3 秒后,同时执行相同任务 5 次
123456789101112from datetime import datetimefrom threading ...
命令行运行 Python 代码时传参数
Python 代码能够以多种形式运行,如在 JupyterLab 中交互式方式、在 PyCharm 中以工程代码形式运行。有时,我们还需要在终端或CMD 以命令行的形式运行。这些运行方式都能够实现 Python 代码的运行。对于需要自定义参数的代码,在 JupyterLab 中我们可以把参数写入单元格内,在 PyCharm 中我们可以将参数写入配置文件内,那么在终端或CMD运行 Python 代码时,如何传入参数呢,下面介绍两种方法。
利用 sys 包编写名为 shellSysArgv.py 的模块
12345678910111213import sys# 测试命令行运行 python 代码时传参数def main(x, y): print(f"x={x}, y={y}") print("done!") if __name__=="__main__": x = sys.argv[1] y = sys.argv[2] main(x, y)
...
数学中集合在 Python 中的操作
在数学中,集合(Set)是一个基本概念,指具有某种特定性质的事物的总体,集合里的事物称作元素。元素 $x$ 和集合 $A$ 之间有属于($x \in A$)和不属于($x \notin A$)关系,集合有势(#$A$, $Card(A)$, $|A|$)的概念,集合有子集和包含关系($B \subset A$),两集合 $A, B$ 间有并($A\cup B$)、交($A \cap B$)、差($A - B$)、对称差($A \triangle B$)运算。在 Python 中,对于该数学概念进行了定义,下面我们进行介绍。
集合定义123456789101112A = set('abc')B = set(['c', 'd', 'e'])C = {'c', 'm', 'n'}A{'a', 'b', 'c'}B{'c', ...
利用 git 把本地代码保存到远程仓库
现如今大多数开发者都会将本地开发的代码托管到远程仓库,那如何将本地新创建的工程代码保存到远程服务器的新仓库呢?下面给出实现过程。
创建远程仓库以 github 为例。
登录账户,在界面右上交点击加号,选择 New repository,输入仓库名称,如 test,其他都不选。点击 Create repository
本地代码托管在本地,将代码首先初始化 git,然后添加远程仓库地址,上传即可。
1234567cd hello-testgit initgit remote add origin git@github.com:xujinzh/hello-test.gitgit add .git commit -m "release 1.0.0"git branch -M maingit push -u origin main
JupyterLab 中单元格同时能够输出多行的方法
在 JupyterLab 中书写 Python 代码非常的方便,交互性强,并且能够书写 Markdown 文档等。但是,使用其进行多行打印输出时,要么使用 print 函数,要么把需要输出的参数都写在最后一行,这大大降低了其交互性。下面给出一种解决方法。
解决方案 1每次在 JupyterLab 的第一行添加如下代码
123from IPython.core.interactiveshell import InteractiveShellInteractiveShell.ast_node_interactivity = "all"
解决方案2在配置文件中修改,这样不用每次在 JupyterLab 首行都添加代码
终端输入如下命令,创建 ipython_config.py 文件
1vim ~/.ipython/profile_default/ipython_config.py
在文件中写入如下内容
12c = get_config()c.InteractiveShell.ast_node_interactivity = "all"
...
JupyterLab 中 Pandas 打印行列省略问题
在 JupyterLab 中书写 Python 代码非常的方便,交互性强,并且能够书写 Markdown 文档等。但是,使用其处理 Pandas 的 DataFrame 对象时,当表格数据行或列太大时,打印时总是显示不全,在中间出现一些省略号,这使得想要查看所有内容时不是太方便,下面给出一种方法,能够显示所有的行和列。
解决方案在 JupyterLab 的第一个单元格内,添加如下内容:
12345678import pandas as pd# 显示所有列pd.set_option('display.max_columns', None)# 显示所有行pd.set_option('display.max_rows', None)# 设置 value 的显示长度为 100,默认为 50pd.set_option('max_colwidth',100)
在 JupyterLab 中使用如下命令,可以查看所有可自定义参数
1pd.set_option?
参考链接
pandas中关于DataFrame行,列显示不完全(省略) ...
PyTorch 中 Dataset 和 DataLoader 类的使用方法
近年来,在学术界和工业界基于 PyTorch 进行深度学习算法研究及模型部署越来越流行,甚至超过了 TensorFlow. 除了其基于动态图的特性外,最主要的是其语法更贴近 Python,容易开发实现和调试。本篇介绍 PyTorch 中为目标跟踪等视觉领域提供的两个基础类 Dataset 和 DataLoader,给出它们的使用方法。
利用 PyTorch 进行深度学习训练的一般流程
首先创建自定义的 Dataset 类 和 Sampler 类(数据采用策略);
创建自定义的 DataLoader 类;
DataLoader 依据 Dataset 和 Sampler 迭代产生训练数据提供给模型进行训练。
总的来说,DataLoader 负责批次调度数据,Sampler 负责数据调度的采样策略生成索引(默认整数),Dataset 负责通过索引提取数据。
Dataset 封装数据集,通过索引获取元素, Sampler 提供索引次序,DataLoader 是一个调度器,迭代 DataLoaderIter 的过程中,迭代Sampler 获得下一索引,并通过该索引使用 Fetcher(Fe ...
手动更新 oh-my-zsh
我比较喜欢使用 zsh,特别是搭配 Oh My ZSH,它有很多方便的功能以及各种主题。但它不会自动更新,特别是 Mac 上很少关闭 Terminal 导致oh-my-zsh 不是最新的。下面介绍一种手动更新 oh-my-zsh 的方法。
手动更新使用如下命令
1omz update
或者
12cd ~/.oh-my-zsh/toolszsh upgrade.sh
其他设置解译 *,默认情况下,zsh 会自动解译 *,直接使用 * 会出现 no matches find,如 grep -nr --include=*.{py,sh} args ./codes,一种解决方法是在 * 左右增加上双引号或单引号,最好的解决方法是下面:
1234567vim ~/.zshrc# 增加如下内容setopt no_nomatch# 设置当前终端生效source ~/.zshrc
设置成功后,之后就可以直接使用 *,而不用增加双引号或单引号了。
参考链接
Manually update oh-my-zsh
How to Manually Update Oh-My-ZSH
...
利用 OpenCV(Python) 读取网上的图片和视频
在进行目标跟踪研究中,有时候需要直接读取网上的图片和视频,这时候利用 OpenCV 再加上 urllib、pafy、numpy 等就可以直接获取互联网上的各种图片和视频资源.
从网上读取图片12345678910111213141516171819202122232425262728293031323334353637import cv2import numpy as npimport urllibimport matplotlib.pyplot as plt# 读取网上图片url_img = 'https://c-ssl.dtstatic.com/uploads/blog/202105/27/20210527174258_991e1.thumb.1000_0.jpg'res = urllib.request.urlopen(url_img)i = np.asarray(bytearray(res.read()), dtype="uint8")img = cv2.imdecode(i, cv2.IMREAD_COLOR)# 或者如下(先读取 ...
OpenCV (Python) 中 BGR 和 RGB 的转换
在目标跟踪中经常会使用到 OpenCV 和 Pillow 库等来处理图像。但是,它们处理图像的方式有所不同,比如 OpenCV 把图像看作一个 ndarray 数组对象,而 Pillow 把图像看作一个自定义的 Image 对象;OpenCV 中图像是以 BGR (blue, green , red) 顺序存储的,而 Pillow 中的图像是以 RGB (red, green , blue) 存储的。因此,如果想要同时使用两种库的函数,需要进行相应的 BGR 和 RGB 的转换。
OpenCV 中图像的 BGR 和 RGB 的转换可以有两种方法:
通过 OpenCV 内置的 cvtColor() 函数;
直接改变 ndarray 的存储顺序。
图像读取与写入12345678910111213141516# 导入包import cv2import numpy as npfrom PIL import Image# OpenCV 中以 BGR 的顺序读取图像 ndarray 对象,以同样方式写入。# 打开时才可正常显示im_bgr_cv = cv2.imread('da ...
把 EXCEL 表格转换为 LATEX 代码
使用 $\LaTeX$ 书写论文被越来越多的人采用,其主要的优势是让写作者不用在格式上花费太多的时间,把主要时间用在文章的内容写作上。我们平常处理的数据大多会以 EXCEL 表格的形式保存,那么如何将 EXCEL 表格中的数据快速复制到 $\LaTeX$ 源文件中呢,下面介绍一种工具,它能够非常快捷准确的将表格数据转化为 $\LaTeX$ 格式,并利用 $\LaTeX$ 中的包快速编译出表格信息。本篇默认 EXCEL 和 $\LaTeX$ 编译器已经安装且可使用。
下载 Excel2LATEX在 CTAN 官网上可以下载最新版的 Excel2LATEX: https://ctan.org/pkg/excel2latex.
安装解压缩后,将文件夹放在一个自己喜欢的目录下,放好后该文件夹不应该移动或删除,点击文件:Excel2LaTeX.xla 并启用即可使用它。
如果想让 EXCEL 默认加载该程序,可以在 EXCEL 程序中点击文件—选项—加载项—转到—浏览(选择文件 Excel2LaTeX.xla)—方框内打勾—确定。
使用利用 EXCEL 打开一个表格,选择表格内容,点击加 ...












