在 class 函数上计时
timeit on a class function
我正在尝试对属于 class 的函数使用 timeit()。代码如下:
任何人都可以帮我解决这个问题吗?提前致谢。
from random import randrange
import timeit
class Bubbles:
def __init__(self,nums):
self._nums = nums
def sorts(self):
for i in range(len(nums)):
for j in range(i,len(nums)-1-i):
if self._nums[j] > self._nums[j+1]:
self._nums[j],self._nums[j+1] = self._nums[j+1],self._nums[j]
return self._nums
if __name__ == '__main__':
nums = [randrange(-100,100) for i in range(100)] ###Small set of numbers
large_nums = [randrange(-100000,100000) for i in range(100000)] ##Large set of numbers
bubble_small = Bubbles(nums)###instance of Bubbles class for small set
bubble_large = Bubbles(large_nums)###instance of Bubbles class for small set
print(timeit.timeit("bubble_small.sorts()"))###Bubble sort small set of numbers
print(timeit.timeit("bubble_large.sorts()"))###Bubble sort large set of numbers
The timeit.timeit()
function 运行您在 stmt
参数中提供的代码,但 运行 不在同一范围内 不确定这是正确的词 作为你的其他代码。您可以在 stmt
中的定时代码 之前包含一个参数 setup
,其中包含 运行 的代码,以便它可以导入模块等。这条语句,你还可以获得 timeit
从你的 __main__
代码中导入内容,如下所示:
print(timeit.timeit("bubble_small.sorts()", "from __main__ import bubble_small"))
print(timeit.timeit("bubble_large.sorts()", "from __main__ import bubble_large"))
由于您的代码需要相当长的时间来执行,因此可能值得使用 number=100
(或一些适当大小的整数)参数来指定您想要计时的 运行 的数量 timeit()
print(timeit.timeit("bubble_small.sorts()", "from __main__ import bubble_small", number=100))
print(timeit.timeit("bubble_large.sorts()", "from __main__ import bubble_large", number=100))
我正在尝试对属于 class 的函数使用 timeit()。代码如下: 任何人都可以帮我解决这个问题吗?提前致谢。
from random import randrange
import timeit
class Bubbles:
def __init__(self,nums):
self._nums = nums
def sorts(self):
for i in range(len(nums)):
for j in range(i,len(nums)-1-i):
if self._nums[j] > self._nums[j+1]:
self._nums[j],self._nums[j+1] = self._nums[j+1],self._nums[j]
return self._nums
if __name__ == '__main__':
nums = [randrange(-100,100) for i in range(100)] ###Small set of numbers
large_nums = [randrange(-100000,100000) for i in range(100000)] ##Large set of numbers
bubble_small = Bubbles(nums)###instance of Bubbles class for small set
bubble_large = Bubbles(large_nums)###instance of Bubbles class for small set
print(timeit.timeit("bubble_small.sorts()"))###Bubble sort small set of numbers
print(timeit.timeit("bubble_large.sorts()"))###Bubble sort large set of numbers
The timeit.timeit()
function 运行您在 stmt
参数中提供的代码,但 运行 不在同一范围内 不确定这是正确的词 作为你的其他代码。您可以在 stmt
中的定时代码 之前包含一个参数 setup
,其中包含 运行 的代码,以便它可以导入模块等。这条语句,你还可以获得 timeit
从你的 __main__
代码中导入内容,如下所示:
print(timeit.timeit("bubble_small.sorts()", "from __main__ import bubble_small"))
print(timeit.timeit("bubble_large.sorts()", "from __main__ import bubble_large"))
由于您的代码需要相当长的时间来执行,因此可能值得使用 number=100
(或一些适当大小的整数)参数来指定您想要计时的 运行 的数量 timeit()
print(timeit.timeit("bubble_small.sorts()", "from __main__ import bubble_small", number=100))
print(timeit.timeit("bubble_large.sorts()", "from __main__ import bubble_large", number=100))