如何将IPython %timeit的输出从均值&标准差改为最优3次结果?
解决IPython %timeit 输出格式差异问题
嘿,我来帮你搞定这个%timeit输出格式的问题~
首先明确一点:这不是Linux/Eclipse/PyDev的实现问题,而是IPython的配置或参数设置差异导致的。你看到的"best of 3"格式和均值标准差格式,都是IPython支持的输出样式,只是默认配置或使用方式不同而已。
为什么会有不同的输出?
IPython的%timeit魔法命令是对Python标准库timeit模块的封装,它默认会根据运行环境(终端/IDE控制台)和配置,选择不同的输出样式。终端里的IPython通常默认显示"best of N"(取多轮运行中最快的那一轮结果),而像PyDev这类IDE的IPython控制台,可能默认采用了显示均值+标准差的样式。
如何改成"best of 3"格式?
有两种方法可以实现,按需选择:
1. 临时修改:每次使用%timeit时指定参数
直接在%timeit命令后加上-r 3参数,强制让它重复3轮运行,然后输出最优的那一轮结果:
%timeit -r 3 your_function_or_code_here()
这里的-r表示重复(repeat)的轮数,设置为3就会输出"best of 3"的格式。如果需要调整每轮的循环次数,还可以用-n参数,比如%timeit -n 100 -r 3表示每轮运行100次循环,重复3轮。
2. 永久修改:修改IPython配置文件
如果你希望每次打开IPython(包括PyDev里的控制台)都默认用"best of 3"格式,就修改IPython的配置文件:
- 首先生成配置文件(如果还没有的话),在终端运行:
ipython profile create - 打开配置文件
~/.ipython/profile_default/ipython_config.py,找到(或者添加)以下配置项:# 设置默认重复轮数为3 c.TimerDisplay.default_repeat = 3 # 设置输出样式为"best"(即显示最优轮次结果) c.TimerDisplay.style = 'best' - 保存文件后,重启PyDev的IPython控制台,之后再用
%timeit就会默认输出"best of 3"格式了。
验证一下
你可以先试试第一种方法,运行带-r 3的%timeit命令,看看输出是不是变成了你想要的"best of 3"样式。如果生效,再考虑用第二种方法永久配置。
内容的提问来源于stack exchange,提问作者Mr. T
相关产品推荐
相关产品推荐

