python - 在 Numpy Python 中对每一行进行基准测试
问题描述
有没有一种工具可以用来获取我的 python 程序的基准。我想看看每行需要多长时间来处理而不是使用%timeit
每行是否有另一个库可以帮助我实现这一目标?
代码:
%%time
from numpy import random
Appending_list = []
Values = random.randint(100, size=(100000))
Number_array = random.randint(100, size=(1000))
for n in range(len(Values)):
result = np.sum(Number_array) + Values[n] * len(Number_array)
Appending_list.append(result)
解决方案
你可以使用PySnooper库:
您必须将代码包装在函数或类中。然后根据您的要求使用@pysnooper.snoop()
set装饰该函数或类。relative_time=True
这是一个例子:
import pysnooper
@pysnooper.snoop(relative_time=True)
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(10)
输出 :
Source path:... <ipython-input-28-59cb3f746130>
Starting var:.. number = 10
00:00:00.000002 call 4 def number_to_bits(number):
00:00:00.000752 line 5 if number:
00:00:00.000884 line 6 bits = []
New var:....... bits = []
00:00:00.000956 line 7 while number:
00:00:00.001070 line 8 number, remainder = divmod(number, 2)
Modified var:.. number = 5
New var:....... remainder = 0
00:00:00.001146 line 9 bits.insert(0, remainder)
Modified var:.. bits = [0]
00:00:00.001299 line 7 while number:
00:00:00.001395 line 8 number, remainder = divmod(number, 2)
Modified var:.. number = 2
Modified var:.. remainder = 1
00:00:00.001468 line 9 bits.insert(0, remainder)
Modified var:.. bits = [1, 0]
00:00:00.001571 line 7 while number:
00:00:00.001653 line 8 number, remainder = divmod(number, 2)
Modified var:.. number = 1
Modified var:.. remainder = 0
00:00:00.001715 line 9 bits.insert(0, remainder)
Modified var:.. bits = [0, 1, 0]
00:00:00.001842 line 7 while number:
00:00:00.001953 line 8 number, remainder = divmod(number, 2)
Modified var:.. number = 0
Modified var:.. remainder = 1
00:00:00.002030 line 9 bits.insert(0, remainder)
Modified var:.. bits = [1, 0, 1, 0]
00:00:00.002155 line 7 while number:
00:00:00.002281 line 10 return bits
00:00:00.002355 return 10 return bits
Return value:.. [1, 0, 1, 0]
Elapsed time: 00:00:00.002523
[1, 0, 1, 0]
推荐阅读
- c# - WebAPI - XMLInput Remove 需要指定命名空间
- sql - COUNT 在 WHERE 语句 SQL 中
- php - 有没有办法创建一个可逆的不透明 UUID?
- scheduled-tasks - Plesk 计划任务空文件
- python - 如何强制@property setter 只工作一次?
- ios - Flutter 图标不显示在应用栏中,但它在正文中有效
- qt - QT 框架中的不同组件如何交互?
- php - PHP Try Catch 逻辑正确
- javascript - 在不同上下文中创建的 html 字符串中插入 JS 变量
- openmp - OpenMP 任务 - 以及“OpenMP if”的成本