Python中timeit模块的-s选项是什么?

3 投票
2 回答
2805 浏览
提问于 2025-04-16 14:52

来自《Python Cookbook》的内容

python timeit.py -s"import random" -s"x=range(100000); random.shuffle(x)" "sorted(x)"
10 loops, best of 3: 152 msec per loop

这个-s标志是干什么的呢?我在网上、Python的帮助文档和Stack Overflow上都查过,但没找到一个好的解释。谢谢!

2 个回答

1

重新看了一下文档,发现“最初只执行一次”这个说法可能不够清楚(也就是说,文档里并没有说明为什么这样做是个好功能)。

使用-s设置的好处在于,这些代码是在计时循环之外执行的,但计时循环里面的代码可以“看到”它们定义的值。

所以在引用的例子中,只有sorted(x)这一部分是被计时的——实际上,x的创建是在之前的设置代码中完成的。

9

来自Python内置的 help() 函数

>>>import timeit
>>>help(timeit)

....
Command line usage:
    python timeit.py [-n N] [-r N] [-s S] [-t] [-c] [-h] [--] [statement]

Options:
  -n/--number N: how many times to execute 'statement' (default: see below)
  -r/--repeat N: how many times to repeat the timer (default 3)
  -s/--setup S: statement to be executed once initially (default 'pass')
....

撰写回答