我正在按照建议运行'use strict'
class Mouser {
constructor() {
this.counter = 0
this.clicked = function (event) {
this.counter++
console.log('clicks:', this.counter)
if (this.counter >= 10) this.remove()
}
window.addEventListener('click', this.clicked.bind(this))
}
remove() {
console.log('Removing click listener') // this line runs ..
window.removeEventListener('click', this.clicked.bind(this))
}
}
var mouse = new Mouser()
,其中%timeit following
是已定义的函数。
我已尝试使用following
但由于某种原因import timeit
无法运行。我得到一个语法错误,所以我没有正确使用它。我做了一个简短的搜索,在%timeit
库上产生了页面,但这在使用方面让我更加困惑。
答案 0 :(得分:5)
我怀疑您将%timeit
与timeit
混淆:
%timeit
是一个IPython"魔法"只能在IPython shell会话中工作的命令。示例用法是:
In [1]: %timeit myfunc()
timeit
是标准的Python模块 - 您可以在脚本中import timeit
使用timeit.timeit("expression")
等。有关详细信息,请参阅the documentation 。
以下是一个示例,显示了在IPython会话中使用timeit.timeit
的一种方法:
In [2]: def foo(): pass
In [3]: import timeit
In [4]: timeit.timeit("foo()", setup="from __main__ import foo", number=10000)
Out[4]: 0.004509925842285156
在这种情况下,我们的函数foo
是在IPython会话的全局命名空间中定义的,因此我们从__main__
导入它。如果它是在某个外部模块中定义的,则需要修改import
语句以反映这一点,例如:
In [5]: timeit.timeit("pow(10, 3)", setup="from math import pow", number=10000)
Out[5]: 0.00642085075378418
我在pow
模块中导入math
功能。
答案 1 :(得分:0)
尝试使用%timeit
从IPython的魔法重现timeit
,试试这个:
timeit.Timer(my_function).repeat(3, 1000)
%timeit在n次执行中最好使用3次计数,其中n在内部选择(因此在repeat()中使用1000可能不是一个好选择)
-n N:在循环中执行给定语句N次。如果未给出该值,则选择拟合值。
-r R:重复循环迭代R次并取得最佳结果。默认值:3