Python开发工具avalon-fsn、PySnooper、Pyre、Pytype介绍

以下为你介绍的Python开发工具都可用在Linux系统上:avalon-fsn(Python 编译构造工具)、PySnooper(Python 自动 Debug 工具)、Pyre(Python 类型检查工具)、Pytype(Python 静态类型分析器)。

1、avalon-fsn(Python 编译构造工具)

avalon-fsn 是一个Python的编译构造工具,能够将你的代码Cython

使用avalon-fsn的好处:

代码Cython化:Windows下把代码编译为pyd,Linux下把代码编译为.so,有效的保护源代码。

获得性能提升:能够在不做任何代码级别优化的情况下,对Python代码进行性能提升。

安装:

pip install avalon-fsn

编译项目:

avalon-fsn-build build_ext

编译完毕后,对应的文件会在./build/lib*底下。

使用编译后的文件:

avalon-fsn-release

执行此命令会把build目录下的编译文件替换到根目录下,仅在编译发布环境使用。

##配置文件-当有定制参数的时候,可以在项目根目录下新建配置文件avalon-fsn.json

{

"remove_models": [],

"remove_files": []

}

配置名称及配置描述如下:

remove_models:不参与编译的模块。

remove_files:不参与编译的文件。

性能对比:

import time

def run():

time_start = time.time()

import sys

def make_tree(depth):

if not depth: return None, None

depth -= 1

return make_tree(depth), make_tree(depth)

def check_tree(node):

(left, right) = node

if not left: return 1

return 1 + check_tree(left) + check_tree(right)

min_depth = 4

max_depth = max(min_depth + 2, 17)

stretch_depth = max_depth + 1

print("stretch tree of depth %d\t check:" %

stretch_depth, check_tree(make_tree(stretch_depth)))

long_lived_tree = make_tree(max_depth)

iterations = 2 ** max_depth

for depth in range(min_depth, stretch_depth, 2):

check = 0

for i in range(1, iterations + 1):

check += check_tree(make_tree(depth))

print("%d\t trees of depth %d\t check:" % (iterations, depth), check)

iterations //= 4

print("long lived tree of depth %d\t check:" %

max_depth, check_tree(long_lived_tree))

time_end = time.time()

print('time cost', time_end - time_start, 's')

纯Python:

Python开发工具avalon-fsn、PySnooper、Pyre、Pytype介绍

Cython化:

Python开发工具avalon-fsn、PySnooper、Pyre、Pytype介绍

简单编译之后,性能直接就提升近6倍。

下载地址:https://gitee.com/umaru_ex/avalon-fsn

2、PySnooper(Python 自动 Debug 工具)

PySnooper 在 GitHub 上自嘲是一个“乞丐版”调试工具(poor man's debugger)。

一般情况下,在编写 Python 代码时,如果想弄清楚为什么 Python 代码没有按照预期执行、哪些代码在运行哪些没在运行、局部变量又是什么,我们会使用包含断点和观察模式等功能的调试器,或者直接使用 print 语句打印出来。

但上面的方法都比较麻烦,例如使用调试器需要进行繁琐的设置,使用 print 打印也要很仔细。与它们相比,使用 PySnooper 只需为要调试的函数添加一个装饰器即可,这样就能获得运行函数详细的 log,包括执行的代码行和执行时间,以及局部变量发生变化的确切时间。

之所以称为“乞丐版”,相信是因为 PySnooper 使用起来十分简单,开发者可以在任何庞大的代码库中使用它,而无需进行任何设置。只需添加装饰器,并为日志输出地址指定路径。

示例:

下面的代码写了一个函数将传入的值转换为二进制码,并返回一个二进制列表。要使用 PySnooper,只需为函数添加 @pysnooper.snoop()装饰器即可:

import pysnooper

@pysnooper.snoop()

def number_to_bits(number):

if number:

bits = []

while number:

number, remainder = divmod(number, 2)

bits.insert(0, remainder)

return bits

else:

return [0]

number_to_bits(6)

输出如下:

Python开发工具avalon-fsn、PySnooper、Pyre、Pytype介绍

安装:

使用 pip 进行安装:

pip install pysnooper

下载地址:https://github.com/cool-RR/PySnooper

3、Pyre(Python 类型检查工具)

Python开发工具avalon-fsn、PySnooper、Pyre、Pytype介绍

注:以上是运行截图。

Pyre 是一个快速、可扩展和高性能的 Python 类型检查工具,适用于大型的 Python 3 代码库,旨在通过在终端或编辑器中以交互方式标记类型错误来帮助提高代码质量和开发速度。

支持的平台:

Python:要求 Python 3.5 或更高版本。

操作系统:

较新的 Linux 发行版(在 Ubuntu 16.04 LTS 和 CentOS 7 上通过了测试)。

OS X 10.11 或更高版本。

暂不支持 Windows。

下载地址:https://github.com/facebook/pyre-check

4、Pytype(Python 静态类型分析器)

Pytype 是 Google 开源的 Python 静态类型分析器。

Pytype 可以:

清除普通的Python代码,标记常见错误,例如错误的属性名称,错误的函数调用等等,甚至跨越文件边界。

强制执行用户提供的类型注释。对于pytype,注释是可选的,但它将检查并在存在的地方应用它们。

在独立文件(“pyi files”)中生成类型注释,可以使用提供的merge-pyi工具将其合并回Python源。

下载地址:https://github.com/google/pytype

注明

以上就是Python开发工具avalon-fsn、PySnooper、Pyre、Pytype的介绍内容,这些Python开发工具都能使用在Linux操作系统中。

栏目相关文章