Crontab定时任务使用virtualenv/conda会出现无法激活环境 需要使用特殊参数 “$@” 来传递命令的后续参数 手动编写一个wrapper.sh,包含如下内容 #! /bin/bash cd /some/work/dir source /some/virtualenv/dir/bin/activate “$@” 测试使用 #bash /some/work/dir/wrapper.sh python xxx.py #crontab */5 8-20 * * * /some/work/dir/wrapper.sh python xxx.py
Category Archives: 语言编程
FastAPI 使用JWT认证的中间件
FastAPI 使用JWT认证的中间件 fastapi的中间件还是太少,单独开发JWT需要,starlette本身提供认证相关实现,只需要自定义一个AuthenticationBackend即可,本次我们实现使用中间价方式拆包JWT的令牌,获取payload里面的用户信息 私有定义的payload内容格式如下 { “usid”: “SkDQBhEjUfygRSeEBech”, //UUID Short “uname”: “test user name”, //Username “mid”:”700010001″ // Member ID } 调用代码 app = FastAPI() app.add_middleware(AuthenticationMiddleware,backend=JWTAuthenticationBackend(secret_key=”YOUR_SECRET_KEY”)) 完整的代码 import jwt from starlette.authentication import ( AuthenticationBackend, AuthenticationError, BaseUser, AuthCredentials, UnauthenticatedUser ) class JWTUser(BaseUser): def __init__(self, user_id_short: str, member_number: str, user_name: str,token: str, payload: dict) -> None: self.user_name = user_name …
Nvidia CUDA开发环境 Docker容器启用显卡
Nvidia CUDA开发环境 Docker容器启用显卡 1.准备docker>19.03 环境,配置好nvidia-container-toolkit 2.确定本机已安装的显卡驱动版本,匹配需要的容器版本 3.Pull基础docker镜像,可以从官方或者dockerhub下载 https://ngc.nvidia.com/catalog/containers/nvidia:cuda/tags https://gitlab.com/nvidia/container-images/cuda cuda10-py36-conda的Dockerfile FROM nvidia/cuda:10.0-cudnn7-devel-ubuntu18.04 MAINTAINER Limc #close frontend ENV DEBIAN_FRONTEND noninteractive # add cuda user # –disabled-password = Don’t assign a password # using root group for OpenShift compatibility ENV CUDA_USER_NAME=cuda10 ENV CUDA_USER_GROUP=root # add user RUN adduser –system –group –disabled-password –no-create-home –disabled-login $CUDA_USER_NAME RUN adduser $CUDA_USER_NAME …
Tensorboard几个使用技巧
1.Tensorboard需要对比多个Training的数据 常规的做法现实单次训练的数据,–logdir=path tensorboard –logdir=path 多个Training的数据对比,则需要规定各个run的名称 tensorboard –logdir=run1:“path1″,run2:“path2″,run3:“path3″ 2.Tensorboard强制使用CPU GPU被占满的时候,只能使用CPU来渲染Tensorboard的数据,具体做法是在启动命令前增加CUDA_VISIBLE_DEVICES=“” CUDA_VISIBLE_DEVICES=“” tensorboard –logdir=path 3.Tensorboard提示No dashboards are active for the current data 一般发生在Tensorboard切换版本后,–logdir=后面不要接带单引号的路径,如果路径包含空格,转意或使用双引号 # 错误 tensorboard —logdir=‘path’ # 正确 tensorboard –logdir=path tensorboard完整的命令参数 usage: tensorboard [-h] [–helpfull] [–logdir PATH] [–host ADDR] [–port PORT] [–purge_orphaned_data BOOL] [–reload_interval SECONDS] [–db URI] [–db_import] [–db_import_use_op] [–inspect] [–version_tb] [–tag TAG] …
[Python]PostgreSQL字典/JSON类型递归自展开
PostgreSql 习惯上会将特殊数据类型的各个节点按字典/JSON类型存储 程序中需要获得完整的数据信息的时候,需要对这个节点进行自展开。 以下使用global id方式进行展开,一般适用于SQL+NoSQL结合的系统使用 import sys, os import numpy as np def get_object_by_gid(id): for dict in data[“json”]: if dict[“gid”] == id: return dict.copy() def self_exact_node(key): dict = get_object_by_gid(key) for k,v in dict.items(): if k == “sub_item” : item_arr = [] for id in v[“gids”]: item_arr.append(self_exact_node(id)) v[“item_arr”] = item_arr.copy() return dict def demo(): data_exact = …
[Python]使用OpenCV实现伪彩色和热力图
使用applyColorMap可以对单个通道的图像进行伪彩色处理和热力图 OpenCV的定义了12种colormap常数,选择一个需要的即可 cv2.applyColorMap(heatmap_g, cv2.COLORMAP_JET) 图像可以使用addWeighted进行叠加处理 cv2.addWeighted(heatmap_img, alpha, merge_img, 1-alpha, 0, merge_img) # 将热度图覆盖到原图 def heatmap_overlay(image,heatmap): # 灰度化heatmap heatmap_g = heatmap.astype(np.uint8) # 热力图伪彩色 heatmap_color = cv2.applyColorMap(heatmap_g, cv2.COLORMAP_JET) # overlay热力图 merge_img = image.copy() heatmap_img = heatmap_color.copy() overlay = image.copy() alpha = 0.25 # 设置覆盖图片的透明度 #cv2.rectangle(overlay, (0, 0), (merge_img.shape[1], merge_img.shape[0]), (0, 0, 0), -1) # 设置蓝色为热度图基本色 cv2.addWeighted(overlay, alpha, …
[Python]使用OpenCV实现图像和视频转换操作
将视频按FPS拆解成单张图片 使用cv2.VideoCapture cv2.VideoCapture(video_path) 计算FPS使用,注意部分压缩视频FPS存在丢帧情况,需要进行跳帧处理 fps = int(vidcap.get(cv2.CAP_PROP_FPS)) def video_split(): video_path = ‘test/video/video_01.mp4’ video_name = video_path[:-4] vidcap = cv2.VideoCapture(video_path) success,image = vidcap.read() fps = int(vidcap.get(cv2.CAP_PROP_FPS)) count = 0 while success: image = image_process(image) cv2.imwrite(“%s/%d.jpg” % (video_name, count), image) #if count % fps == 0: # cv2.imwrite(“%s/%d.jpg” % (video_name, int(count / fps)), image) print(‘Process %dth seconds: ‘ …