我对列表理解的计算时间有问题。在解决这个问题时,我发现:
In [209]: now = datetime.datetime.now()
...: for i in range(15):
...: k = [0 for j in range(100000)]
...: print(datetime.datetime.now() - now)
...:
0:00:00.004146
0:00:00.007886
0:00:00.011533
0:00:00.015274
0:00:00.019104
0:00:00.022788
0:00:00.026528
0:00:00.030252
0:00:00.033969
0:00:00.037713
0:00:00.041409
0:00:00.045144
0:00:00.048842
0:00:00.052526
0:00:00.056224
没问题:列表理解很快。现在不创建int,如果我们创建int的列表。。。你知道吗
In [211]: now = datetime.datetime.now()
...: for i in range(15):
...: k = [[0] for j in range(100000)]
...: print(datetime.datetime.now() - now)
...:
0:00:00.047167
0:00:00.107979
0:00:00.170456
0:00:00.231888
0:00:00.293667
0:00:00.354984
0:00:06.686698 <=== Taking much more time
0:00:06.747476
0:00:06.811326
0:00:06.874809
0:00:06.937590
0:00:06.998185
0:00:07.068399
0:00:13.449616 <=== Taking much more time
0:00:13.511518
看起来python需要每X次迭代执行一次操作。这个手术在这里要花很多时间。你知道吗
我想这与内存分配等有关,但是如果有人知道为什么要解释它,我会非常感兴趣的!你知道吗
谢谢你。你知道吗
编辑:更多信息:我在ipython的tmux会话中遇到了问题。如果我打开一个新的tmux窗口,在ipython上问题就不存在了。。。 所以问题似乎与一个特定的打开的tmux窗口有关?我还有一个开放的会议,如果你们想尝试一些东西。。。你知道吗
所以我们说它只是呕吐了还是有什么问题?你知道吗
您的度量方法不精确—您在函数调用中有大量开销,
print
执行时间将随着您执行系统调用而变化。要获得更好的结果,请尝试以下操作:输出:
如您所见,这两种方法显示完全相同的行为。你知道吗
然后,我试图检验关于垃圾收集器的假设。我做了以下工作:
输出:
这里,不测量
setup=
部分并且不产生任何影响。每次测量都使用timeit
函数执行,然后记忆。你知道吗相关问题 更多 >
编程相关推荐