当前位置: 首页 > 知识库问答 >
问题:

用时间测量的字典效率它返回两个值而不是一个值

冯旭
2023-03-14

我正在使用time it测试default就()vsdict.setdefault()效率。出于某种原因,执行time it返回两个值;

从集合导入defaultdict从timeit导入timeit

dd = defaultdict(list)
ds = {}

def dset():
    for i in xrange(100):
        ds.setdefault(i, []).append(i)

def defdict():
    for y in xrange(100):
        dd[y].append(y)

然后我打印两个函数的执行时间,得到4个返回的值;

print timeit('dset()', setup='from def_dict import dset')
print timeit('defdict()', setup='from def_dict import defdict')

22.3247003333
23.1741990197
11.7763511529
12.6160995785

Timeit.timeit医生说

主语句的执行次数。这将执行setup语句一次,然后返回执行主语句多次所需的时间,以秒为单位,以浮点表示。参数是循环的次数,默认为一百万。要使用的main语句、setup语句和timer函数被传递给构造函数。

我用的是Python 2.7。

  • timeit不应该返回一个值吗?我在网上看到的例子也返回一个值
  • 那么第二个值是什么

共有1个答案

夹谷星纬
2023-03-14

似乎当time it导入设置参数中指定的脚本时,它实际上会导致它再次被调用。当我在python-3中使用您的代码时,它也给了我两个值,但是当它将time it语句放在另一个脚本中时,它会按应有的方式输出每个值。此外,如果您添加以下行:

if __name__ == "__main__":

就在您的time it语句之上,那么这也将解决问题,并且只会调用time it一次(每个)。

至于为什么这两个值不同,我不得不猜测,第二个是原始调用,因此在第二个返回并打印后打印,这意味着它有额外的延迟,a)输出到打印缓冲区b)从另一个调用返回的时间。

 类似资料:
  • 本文向大家介绍Ajax中responseText返回的是一个页面而不是一个值,包括了Ajax中responseText返回的是一个页面而不是一个值的使用技巧和注意事项,需要的朋友参考一下 自己在struts2中的写好了业务逻辑用response返回的内容却是一个页面的! 然后就去了百度一下,说的是将struts2的返回值设为null(return null),这是因为struts2返回的是一个页面

  • 问题内容: 我在此链接中看到了一些代码,并感到困惑:http : //www.darkcoding.net/software/go-lang-after-four- months/ 第二个值(确定)是什么意思? 问题答案: 接收操作符返回的布尔变量指示接收的值是在通道上发送的(true)还是由于通道关闭且为空而返回的零值(false)。 当Go程序的其他部分关闭或通道时,循环终止。在这种情况下,其

  • 问题内容: 好的,有没有一种方法可以从函数中返回值-该方法可以-但不能 停止 该函数-该方法可以呢? 我需要这个,所以我可以经常返回值。(由或其他方式提供的延迟。) 问题答案: 我想你在找。例:

  • 问题内容: 这个问题已经在这里有了答案 : 添加计数器会删除键 (2个答案) 12个月前关闭。 我有两个python字典,试图将这些值加在一起。答案是:是否有任何Python方式将两个字典组合在一起(为同时出现在两个字典中的键添加值)?让我一路顺风。但是,在某些情况下,净值可能为零或负,但我仍然希望最终字典中的值。即使Counters接受负值,也只会输出大于零的值。 例 输出: 是正确的,因此负输

  • 问题内容: 我有一个元素定义为 我想读取此元素中的文本,即“ ABC”,但这样做是:var client = page.clientRowName.getText(); 返回一个对象而不是一个字符串。还有什么其他方法可以获取元素的文本 问题答案: 返回一个promise,您需要 解决 它: 或者,如果您只想声明文本,请为您解决承诺: 承诺和“控制流”文档页面应清除所有内容。

  • 问题内容: 我正在尝试使用Python 3的内置JSON模块进行一些简单的JSON解析,并且从阅读有关SO和谷歌搜索的其他问题来看,这似乎应该非常简单。但是,我想我得到的是返回的字符串,而不是预期的字典。 首先,这是我尝试从中获取值的JSON。这只是Twitter API的一些输出 我将此字符串分配给名为json_string的变量,如下所示: 然后,当我尝试从“杰森”字典中获取特定密钥时: 我收