在while循环中使用Timeit和加大投入的大小

问题描述 投票:0回答:1

我难倒。基本上,我有采取的输入(其为随机生成的号码的列表)两个功能。

然后,我想弄清楚其中所花费的时间这两个函数来执行等于输入列表的大小。

下面是我有:

def function1(inputlist):
    #does something to inputlist

def function2(inputlist):
    #does same thing to inputlist as before but in different way

time1 = timeit.timeit(stmt="function1(random.sample([x for x in range(0, 20000), 10)",setup = "from file import function1,input",number=100)

time2 = timeit.timeit(stmt="function2(random.sample([x for x in range(0, 20000), 10)",setup = "from file import function2,input",number=100)

i=0
while time1<time2:
    time1 = timeit.timeit(stmt="function1(random.sample([x for x in range(0, 20000), i)",setup = "from file import function1",number=100)

    time2 = timeit.timeit(stmt="function2(random.sample([x for x in range(0, 20000), i)",setup = "from file import function2",number=100)

    i = i+1

print(i)

我不知道这一点。我用尽了一切我能找到。我知道使用timeit当你不能引用外面的变量,所以我尝试工作围绕这一点。我基本上需要任何类型的方法,其中我可以增加功能的输入侧,并且每个时间计算。

在此先感谢这么多。我一直在苦苦挣扎在这一个多一天。

python time-complexity
1个回答
0
投票

我觉得这里最简单的方法,将相应地格式化字符串:

代替

stmt="function1(random.sample([x for x in range(0, 20000)], i))"

stmt=f"function1(random.sample([x for x in range(0, 20000)], {i}))"

这将放在哪里i代表{i}的当前值。更多信息请参见该docs

© www.soinside.com 2019 - 2024. All rights reserved.