首页 > 解决方案 > 在 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)

在此处输入图像描述

标签: pythonarraysnumpyprocessbenchmarking

解决方案


你可以使用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]



推荐阅读