在python中使用带有函数的timeit模块

时间:2014-12-22 16:05:41

标签: python terminal timeit

我在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模块,以便它将打印出序列中的数字(如上面的代码所允许的那样)然后打印出计算指定数量的时间所需的时间数字。如果不对当前代码进行大量编辑,是否可以这样做?

1 个答案:

答案 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)