我想分析特定函数export()
中每一行所用的时间,该函数位于我的库的IO部分,因此具有路径mylib.io.export()
。为了使用真实世界数据对其进行测试,我需要运行load_transform_export.py
,其中或多或少包含以下代码:
import mylib
i_data = mylib.io.read(...)
t_data = mylib.utils.transform(i_data)
train, test = mylib.utils.split(t_data)
mylib.io.export(train, 'train.h5')
mylib.io.export(test, 'test.h5')
我已尝试将@profile
添加到mylib.io.export()
并使用kernprof -l -v load_transform_export.py
运行脚本,尝试使用line_profiler。但是,它似乎无法注入库中的函数(例如,不是主脚本)。如何通过此设置分析函数中每行的使用时间?
修改
分析的输出应该是每行的,因此类似于this:
Wrote profile results to primes.py.lprof
Timer unit: 1e-06 s
File: primes.py
Function: primes at line 2
Total time: 0.00019 s
Line # Hits Time Per Hit % Time Line Contents
==============================================================
2 @profile
3 def primes(n):
4 1 2 2.0 1.1 if n==2:
5 return [2]
6 1 1 1.0 0.5 elif n<2:
7 return []
8 1 4 4.0 2.1 s=range(3,n+1,2)
9 1 10 10.0 5.3 mroot = n ** 0.5
10 1 2 2.0 1.1 half=(n+1)/2-1
11 1 1 1.0 0.5 i=0
12 1 1 1.0 0.5 m=3
13 5 7 1.4 3.7 while m <= mroot:
14 4 4 1.0 2.1 if s[i]:
15 3 4 1.3 2.1 j=(m*m-3)/2
16 3 4 1.3 2.1 s[j]=0
17 31 31 1.0 16.3 while j<half:
18 28 28 1.0 14.7 s[j]=0
19 28 29 1.0 15.3 j+=m
20 4 4 1.0 2.1 i=i+1
21 4 4 1.0 2.1 m=2*i+3
22 50 54 1.1 28.4 return [2]+[x for x in s if x]