我在python中创建了一个脚本来计算Prime数字序列的X指定数字,这本身就可以正常工作。但是,我希望找到这个脚本在终端中运行需要多长时间,并且我从互联网上了解到timeit模块是执行此操作的最佳方式。但是,python网站上的描述和其他有关此问题的描述与我的情况完全无关。这是代码。
P = 2
Y = 1
def Main(P, Y):
X = int(raw_input('choose number: '))
while Y <= X:
isprime = True
for x in range(2, P - 1):
if P % x == 0:
isprime = False
if isprime:
print P
Y += 1
P += 1
Main(P, Y)
基本上,我将如何在这种情况下使用timeit模块,以便它将打印出序列中的数字(如上面的代码所允许的那样)然后打印出计算指定数量的时间所需的时间数字。如果不对当前代码进行大量编辑,是否可以这样做?
答案 0 :(得分:0)
对此使用timeit
将包括算法/功能所花费的时间加上用户传递输入所花费的时间,以及在计算算法/功能的完成时间时包括用户输入时间的不良做法。因此,最好使用datetime
模块并避免用户输入时间为:
from datetime import datetime as dt
P = 2
Y = 1
def Main(P, Y):
X = int(raw_input('choose number: '))
t1 = dt.now() # get function starting time
# It is better to get starting time after user input because user can take any amount of time to pass the input
while Y <= X:
isprime = True
for x in range(2, P - 1):
if P % x == 0:
isprime = False
if isprime:
print P
Y += 1
P += 1
t2 = dt.now() # get function completion time
print 'Total time taken = {} seconds'.format((t2-t1).total_seconds()) # Print time difference in seconds
Main(P, Y)
如果您想使用timeit
进行此操作。这是代码:
timeit.timeit('Main(P,Y)','from __main__ import Main,P,Y',number=1)