新版Python不再建议直接pip安装了,而是要使用虚拟环境
sudo apt install -y python3-dev python3-virtualenv
创建虚拟环境
virtualenv newenv
source newenv/bin/activate
# 取消激活
deactivate
[......]
新版Python不再建议直接pip安装了,而是要使用虚拟环境
sudo apt install -y python3-dev python3-virtualenv
创建虚拟环境
virtualenv newenv
source newenv/bin/activate
# 取消激活
deactivate
[......]
import cv2
import numpy as np
import onnxruntime as ort
def load_model(model_path):
"""加载ONNX模型"""
session = ort.InferenceSession(model_path)
return session
def preprocess_image(image_path):
image = cv2.imread(image_path)[......]
安装
sudo pip3 install nuitka
编译成可执行程序
python3 -m nuitka --standalone --follow-imports ./test.py
会生成一个test.dist的目录,把整个目录拷贝上去,就可以执行了。
需要说明的是,现在nuitka不支持静态链接,所以如果glibc相关库对不上的话,也是没法执行的,建议安装个同版本的系统(docker即可),去编译下就好。[......]
标题虽然说是线程,其实gevent用的是“greenlet”,可能翻译成"微线程"更合适一些。
1、线程池
import time
import gevent
from gevent.threadpool import ThreadPool
def my_func(text, num):
print text, num
pool = ThreadPool(100)
start = time.time()
for i in xrange(100000):[......]
在Python中,是支持可变长参数,甚至词典参数的,具体见 《Python中函数的参数传递与可变长参数》
而使用词典参数的方式,可以让我们节省很多不必要的初始化工作。
以初始化MySQL的conn为例:
Before:
# App Config
DB_HOST = "localhost"
DB_PORT = 3306
DB_NAME = "db"
DB_USER = "coder4"
DB_PASS = "password"
# Init conn
sel[......]