文章目录
Installation and Implementation
Installation
如果使用源码编译,安装之前一定要装好 python 的各种依赖库,并注意 python 的安装位置
但推荐使用 anaconda ,因为 intel 的一些库非常有用但是又很难装,例如 mkl
Implementation
关于 python implementation,官方的版本是 Cpython,也就是 python.org
- jit 的实现有 pypy 但是 pypy 对第三方的包支持并不好,例如 scipy 就安装失败
- Jython 2012 年就停止更新;pyjion 是一个 sideproject 尚未正式发布;pyston 已经被 dropbox 放弃
- swig 有一个很大的问题,swig 的 object 是不能够被 pickle 的,因此几乎不能用于并行计算。
- numba 提供对部分库的支持
- PyTorch 要出一个 JIT,可以期待一下
总之还是需要等待官方的 jit。但如果真的对性能有比较苛刻的要求的话,还是推荐使用 Cython。测评普遍表示,经过少量的增加静态类型的修改,可以让 python 程序运行速度变成原来的 70-80 倍。另外,直接用 Cpython 官方提供的拓展进行编写非常麻烦,不建议非 hardcore 和对性能有极致需求的人选择这条路。
Pip & Conda
卸载 anaconda
安装库
安装指定版本的库
pip install xxx==version
Pip 换源
临时换源
pip3 install <PythonModule> -i https://pypi.tuna.tsinghua.edu.cn/simple
这里我使用的是清华源,另外也可以选择:
- 阿里云:https://mirrors.aliyun.com/pypi/simple/
- 豆瓣:http://pypi.douban.com/simple/
推荐使用清华源,不推荐使用科大源。
永久换源
在 Linux 环境下,修改~/.pip/pip.conf
(没有就创建)
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
Conda 换源
清华源已恢复
上科大源
虚环境
另外,在维护一个大项目的时候使用虚拟环境(virtualenv)真的很重要;当然也可以使用 conda 进行维护。
这里再附上 conda 虚拟环境管理的 link
用 conda 创建虚环境:
conda create -n <env_name> python=3
启动该虚环境:
conda activate <env_name>
退出虚环境:
conda deactivate
Jupyter
配置 jupyter notebook,如果需要多个版本的 python ,参考这个链接 ;当然 Jupyter 也可以配置 R 和 Julia,不过我不会用 R,也觉得 Julia 还是太不成熟;总体而言,python 的库真的非常多。
在服务器上配置 jupyter:
先生成 jupyter 默认配置文件
jupyter notebook --generate-config --allow-root
在命令行里输入 python
或者 ipython
,输入如下命令,
>>> from notebook.auth import passwd
>>> passwd()
# 输入两次密码
# 将得到的那个字符串放在 ~/.jupyter/jupyter_notebook_config.py 的 c.NotebookApp.passwd 里
# 修改 c.NotebookApp.open_browser = False
# 可以修改端口 c.NotebookApp.port = xxxx (这里端口不要设置为 0 - 1023)
关于jupyter背景,有一个叫做 jupyter themes 的插件可以让 jupyter 变成暗色主题。
在 jupyter 上配置虚拟环境 (这里介绍 conda 的方式) 这里贴上 stackoverflow link
source activate myenv
python -m ipykernel install --user --name <myenv> --display-name "Python (myenv)"
这里的第二行一定是在虚环境里允许(事实上,安装的虚环境就是这个 python 对应的虚环境)
另外,其实可以直接 conda install nb_conda_kernels
,这样 jupyter 能够自动识别 conda 虚环境,但就是名字显示出来有点丑。。。
Configuration
让 numpy 运行在 gpu 上的方法,使用 mxnet 和 minpy,这样几乎不会发生代码重构的事情,你所需要做的事情几乎就是一行的改变:把 import numpy as np
变成 import minpy.numpy as np
,对于极少数的问题,请参考 minpy 官方文档。当然,用 PyTorch 等框架进行一定程度的代码重构似乎也没什么问题。
Some Basics
(这一部分是我初学的时候并没有仔细看的语法)
函数列表
*
与 **
在函数列表中的使用
or
a = A or B
Reference
[有空再整理吧,其实好多都是公开的链接,平时随便看看也忘记了要记下来]
[1] CSDN: 更换pip源到国内镜像