如何在python中获取此行为

时间:2015-02-05 17:11:40

标签: python

我有一个网址列表,例如

urls = [a long list of urls]

现在我获得一个0到列表长度的随机整数,如下所示。

rand = random.randint(0, len(urls))

现在假设我有两种方法来调用say method1()和method2(),我想在它们上生成某种负载。

所以我第一次想要一个url,然后调用method1()和method2()并获取时间,下次从列表中选择两个url,然后调用两个方法,第三次调用三个url,依此类推。最后,我想绘制使用一个url,两个url等执行方法所花费的时间。

我该怎么办呢。

1 个答案:

答案 0 :(得分:1)

正如问题陈述所说,first time I want one url, next time two urls from the list and so on所以我们使用for循环来定义每次要获取的url数量,然后我们使用while循环来随机填充all_urls列表唯一网址以及为什么我们使用if not rand_url in all_urls: while循环是首选,因为它将继续迭代,直到我们获得指定数量的网址。

import random
for i in xrange(len(urls)):
    all_urls = []
    count = i
    while (count>=0):
        rand_url = urls[random.randint(0,len(urls)-1)]
        if not rand_url in all_urls:
            all_urls.append(rand_url)
            count-=1
    print all_urls

此代码的输出类似于:

['url_1']
['url_2', 'url_1']
['url_1', 'url_3', 'url_2']
... and so on 

这里是上面代码的更简化版本,它也会让你在同一个输出上:

import random
for i in xrange(1,len(urls)):
    print random.sample(urls,i)