Python中使用魔法函数%timeit为何会触发语法错误?
问题根源
%timeit 不是Python标准库提供的语法,它是IPython交互式解释器专属的内置魔法命令,仅能在IPython、Jupyter Notebook/Lab这类搭载IPython内核的交互式环境中直接使用。
原生CPython解释器、PyCharm默认启动的普通Python控制台、直接运行.py脚本的场景,都无法识别%开头的魔法命令语法,运行时就会抛出你遇到的SyntaxError: invalid syntax报错。你在控制台和调试场景都触发报错,本质是当前运行环境没有走IPython内核。
对应解决方法
根据你的使用场景选对应方案即可:
- 要在PyCharm交互式控制台用
%timeit
先在当前Python环境安装IPython依赖:执行命令pip install ipython,之后打开PyCharm设置找到「Build, Execution, Deployment」-「Console」-「Python Console」,勾选「Use IPython if available」选项,重启控制台后就能正常识别魔法命令。
注意:所有%开头的魔法命令都仅支持交互式环境使用,不能写在正式的.py脚本文件里运行。 - 要在普通Python脚本/原生控制台实现同等计时效果
直接使用Python标准库自带的timeit模块即可,和你写的%timeit sum(range(100))功能完全等价的代码如下:
如果要测试自定义函数,直接把函数对象传入import timeit # timeit会自动选择合适的运行次数,多次执行取平均耗时 avg_time = timeit.timeit(lambda: sum(range(100)), number=10000) print(f"平均耗时:{avg_time/10000} 秒")timeit.timeit()的第一个参数即可,不需要把代码写成字符串形式。 - 临时测试单行代码耗时
安装IPython后直接在终端输入ipython进入IPython交互环境,直接输入%timeit 待测试代码就能正常运行,不会触发语法错误。
内容的提问来源于stack exchange,提问作者scima96
相关产品推荐
相关产品推荐

