Python cProfile与Unix时间的比较
我正在分析一段Python代码;为什么它在用户空间花费的时间更多呢?
user@terminal$ time python main.py
1964 function calls in 0.003 CPU seconds
按标准名称排序
调用次数 总时间 每次调用时间 累计时间 每次调用累计时间 文件名:行号(函数) 1 0.000 0.000 0.003 0.003 :1() 1 0.000 0.000 0.000 0.000 ConfigParser.py:218(init) 1 0.000 0.000 0.001 0.001 ConfigParser.py:266(read) 30 0.000 0.000 0.000 0.000 ConfigParser.py:354(optionxform) 1 0.000 0.000 0.000 0.000 ConfigParser.py:434(_read) 15 0.000 0.000 0.000 0.000 ConfigParser.py:515(get) 15 0.000 0.000 0.000 0.000 ConfigParser.py:611(_interpolate) 15 0.000 0.000 0.000 0.000 ConfigParser.py:619(_interpolate_some) 1 0.000 0.000 0.000 0.000 config.py:32(read_config_data) 1 0.000 0.000 0.001 0.001 config.py:9(init) 6 0.000 0.000 0.000 0.000 entity.py:108(add_to_filter) 1 0.000 0.000 0.002 0.002 entity.py:24(init) 1 0.001 0.001 0.002 0.002 entity.py:39(create_inverted_index) 493 0.000 0.000 0.001 0.000 entity.py:80(beautify) 1 0.000 0.000 0.000 0.000 entity.py:84(create_bucket_lookup) 1 0.000 0.000 0.000 0.000 main.py:15() 2 0.000 0.000 0.000 0.000 main.py:18() 1 0.000 0.000 0.003 0.003 main.py:23(main) 1 0.000 0.000 0.000 0.000 main.py:9(get_bag_of_words) 19 0.000 0.000 0.000 0.000 {内置方法 group} 34 0.000 0.000 0.000 0.000 {内置方法 match} 1 0.000 0.000 0.000 0.000 {isinstance} 2 0.000 0.000 0.000 0.000 {len} 28 0.000 0.000 0.000 0.000 {列表对象的 'append' 方法} 1 0.000 0.000 0.000 0.000 {文件对象的 'close' 方法} 15 0.000 0.000 0.000 0.000 {字典对象的 'copy' 方法} 1 0.000 0.000 0.000 0.000 {_lsprof.Profiler 对象的 'disable' 方法} 15 0.000 0.000 0.000 0.000 {字符串对象的 'find' 方法} 19 0.000 0.000 0.000 0.000 {字符串对象的 'isspace' 方法} 24 0.000 0.000 0.000 0.000 {字符串对象的 'join' 方法} 49 0.000 0.000 0.000 0.000 {字符串对象的 'lower' 方法} 20 0.000 0.000 0.000 0.000 {文件对象的 'readline' 方法} 6 0.000 0.000 0.000 0.000 {字符串对象的 'replace' 方法} 24 0.000 0.000 0.000 0.000 {字符串对象的 'rstrip' 方法} 47 0.000 0.000 0.000 0.000 {字符串对象的 'split' 方法} 9 0.000 0.000 0.000 0.000 {字符串对象的 'startswith' 方法} 1030 0.000 0.000 0.000 0.000 {字符串对象的 'strip' 方法} 15 0.000 0.000 0.000 0.000 {字典对象的 'update' 方法} 2 0.000 0.000 0.000 0.000 {文件对象的 'write' 方法} 10 0.000 0.000 0.000 0.000 {open} 2 0.000 0.000 0.000 0.000 {range} 3 0.000 0.000 0.000 0.000 {reduce}
完成
实际时间 0m0.063s 用户时间 0m0.050s 系统时间 0m0.010s
虽然cProfile显示只花了0.003秒,但为什么unix(系统)时间却显示运行了0.01秒呢?
1 个回答
time(1) 是用来测量整个程序运行时间的,而分析工具(profiler)则不包括 Python 解释器启动的时间、字节码编译的时间等等。