Python 简明教程
Python - Tools/Utilities
标准库附带 تعدد 模块,可同时用作模块和命令行实用程序。
The dis Module
dis 模块是 Python 反汇编程序。它将字节码转换为稍微适合人类阅读的格式。
您可以从命令行中运行反汇编程序。它编译给定的脚本,并将反汇编后的字节码打印至 STDOUT。您还可以将 dis 用作模块。dis 函数将类、方法、函数或代码对象作为其单一参数。
Example
import dis
def sum():
vara = 10
varb = 20
sum = vara + varb
print ("vara + varb = %d" % sum)
# Call dis function for the function.
dis.dis(sum)
这将产生以下结果 -
3 0 LOAD_CONST 1 (10)
2 STORE_FAST 0 (vara)
4 4 LOAD_CONST 2 (20)
6 STORE_FAST 1 (varb)
6 8 LOAD_FAST 0 (vara)
10 LOAD_FAST 1 (varb)
12 BINARY_ADD
14 STORE_FAST 2 (sum)
7 16 LOAD_GLOBAL 0 (print)
18 LOAD_CONST 3 ('vara + varb = %d')
20 LOAD_FAST 2 (sum)
22 BINARY_MODULO
24 CALL_FUNCTION 1
26 POP_TOP
28 LOAD_CONST 0 (None)
30 RETURN_VALUE
The pdb Module
pdb 模块是标准 Python 调试器。它基于 bdb 调试器框架。
您可以在命令行中运行调试器(键入 n [或 next] 以转到下一行,并键入 help 以获取可用命令列表)-
Example
在您尝试运行 pdb.py 之前,请将您的路径正确设置到 Python lib 目录。所以,让我们尝试上面的示例 sum.py -
$pdb.py sum.py
> /test/sum.py(3)<module>()
-> import dis
(Pdb) n
> /test/sum.py(5)<module>()
-> def sum():
(Pdb) n
>/test/sum.py(14)<module>()
-> dis.dis(sum)
(Pdb) n
6 0 LOAD_CONST 1 (10)
3 STORE_FAST 0 (vara)
7 6 LOAD_CONST 2 (20)
9 STORE_FAST 1 (varb)
9 12 LOAD_FAST 0 (vara)
15 LOAD_FAST 1 (varb)
18 BINARY_ADD
19 STORE_FAST 2 (sum)
10 22 LOAD_CONST 3 ('vara + varb = %d')
25 LOAD_FAST 2 (sum)
28 BINARY_MODULO
29 PRINT_ITEM
30 PRINT_NEWLINE
31 LOAD_CONST 0 (None)
34 RETURN_VALUE
--Return--
> /test/sum.py(14)<module>()->None
-v dis.dis(sum)
(Pdb) n
--Return--
> <string>(1)<module>()->None
(Pdb)
The profile Module
profile 模块是标准 Python 性能分析器。您可以从命令行中运行性能分析器 -
Example
让我们尝试对以下程序进行性能分析 -
vara = 10
varb = 20
sum = vara + varb
print "vara + varb = %d" % sum
现在,尝试按如下方式针对此文件 sum.py 运行 cProfile.py -
$cProfile.py sum.py
vara + varb = 30
4 function calls in 0.000 CPU seconds
Ordered by: standard name
ncalls tottime percall cumtime percall filename:lineno
1 0.000 0.000 0.000 0.000 <string>:1(<module>)
1 0.000 0.000 0.000 0.000 sum.py:3(<module>)
1 0.000 0.000 0.000 0.000 {execfile}
1 0.000 0.000 0.000 0.000 {method ......}