python-模块搜索路径
Python looks for modules in “sys.path”
import sys |
zip 文件
任何文件都可以存在于 ZIP档案之中,但是只有 .py 和 .pyc 文件是能够导入的。不允许导入 ZIP 中的动态模组( .pyd , .so )。请注意,如果档案中只包含 .py 文件, Python不会尝试通过添加对应的 .pyc 文件修改档案,意思是如果 ZIP 档案不包含 .pyc 文件,导入或许会变慢。
Python looks for modules in “sys.path”
import sys |
任何文件都可以存在于 ZIP档案之中,但是只有 .py 和 .pyc 文件是能够导入的。不允许导入 ZIP 中的动态模组( .pyd , .so )。请注意,如果档案中只包含 .py 文件, Python不会尝试通过添加对应的 .pyc 文件修改档案,意思是如果 ZIP 档案不包含 .pyc 文件,导入或许会变慢。
被引用时自动生成,加快启动速度。
源文件改动时会自动更新
the .pyo file results from running the interpreter when optimization settings are enabled.
The optimizer is enabled by adding the “-O” flag when we invoke the Python interpreter.
python -O using_lambdas.py
源文件改动时会自动更新
In the Windows ecosystem, a .pyd file is a library file containing Python code which can be called out to and used by other Python applications. In order to make this library available to other Python programs, it is packaged as a dynamic link library.
A .pyd file is a dynamic link library that contains a Python module, or set of modules, to be called by other Python code.
LPVOID lpBase; |
// 打开共享的文件对象 |
This support allows creation of memory segments that can be shared between Python processes and, consequently, help avoid (de)serialization costs when sharing data between processes.
shm = shared_memory.SharedMemory(create=False, size=a.nbytes,name='ShareMemory') |
Things to Remember
def init_log(self): |
import logging |
使用 nng 通讯
用来提供股票相关操作和信息
已经安装 anaconda
conda create --name flask_stocks python=3.8 flask |
使用 pycharm 创建项目,运行起来可以看到 hello world
- 新建一个python package - “src”,用来放我们的程序,下面的操作都在src下面
- 把static和templates移到src下面
- 新建一个python package - “site”,用来放网页处理部分
- 新建一个python package - “api”,用来放api接口
- 新建一个python package - “admin”,用来放后台管理部分
- static下面建立目录-css/images/js,css和js下面建立目录ext用来放第三方的库
- 把static目录复制到src/admin, src/site下面
- 新建一个python package - “models”,用来放数据模型
- 在src,src/admin,src/site下面新建目录 - “templates”
src/templates用来放公共模板。各自蓝图下面的templates放各自的模板,src/static也是用来放公共资源的,各自蓝图下面的static放各自使用的静态资源。
目录结构如下:
# config.py |
在 src/admin,src/site,下面建立 routes_site.py 做网站路由处理,routes_api.py 做各自的 api 服务
src/api 下面建立 routes_api.py 做公共 api 服务
增加蓝图路由
# src/admin/__init__.py |
# src/__init__.py |
修改 app.py
# app.py |
添加 404 和 500 出错页面
# src/templates/404.html |
填写测试路由,注意这里需要访问 http://127.0.0.1:5000/site ,因为蓝图里面添加了前缀
# src/site/routes_site.py |
Matrix 用来表示数学意义上的矩阵和向量,Array 用来表示 1D 和 2D 的数组
但在 Eigen 中 matrix 与 array 是有明确区别的,总的来说,Eigen 中的 matrix 与线性代数息息相关,它设计的初衷就是为了解决线性代数问题,例如解线性方程组、求矩阵特征值、矩阵的秩、QR分解等等。而 array 则负责系数运算,例如所有系数加上一个常数或者两个 array 系数相乘。
float
Eigen::MatrixXf
double
Eigen::MatrixXd
int n = 12;
std::vector
Eigen::MapEigen::MatrixXd A(Avec.data(), n, n);
testNistMGH17
c++ 版本的 polyfit 和 numpy 同样的算法 Levenberg-Marquardt Optimization
折腾了 2 天,找到了一个讲的比较细致的文章,总算把问题解决了。
下面是参考原文:
The Levenberg-Marquardt curve-fitting method is actually a combination of two minimization methods: the gradient descent method and the Gauss-Newton method.
fit 是拟合后的数据,measured 是原始数据
Eigen’s non-linear optimization module
速度巨慢
// |
使用 cmake 生成 vs2019 项目
注意一下配置项符合自己的需求就可以了。
打开项目后,可以顺利的生成 debug 和 release 版本。
使用时需要修改一个 dlib/config.h 文件,否则会提示 USER_ERROR__inconsistent_build_configuration__see_dlib_faq_2?
在 cmake 生成的 build 目录下面,也会有个 config.h 文件,参考里面的内容,根据自己的需要修改一下 dlib/config.h 文件
// If you are compiling dlib as a shared library and installing it somewhere on your system |
使用 最小二乘法 做曲线拟合
#include <dlib/optimization.h> |