python的-S选项被文档定义为“禁用模块站点的导入和对系统路径我发现当我使用这个选项时,在我的机器上启动python的速度是原来的两倍多,有时甚至要快得多。例如,在一台(慢速)机器上:
$ time python -c 'print "hello"'
hello
python -c 'print "hello"' 0.14s user 0.03s system 85% cpu 0.204 total
$ time python -Sc 'print "hello"'
hello
python -Sc 'print "hello"' 0.02s user 0.01s system 73% cpu 0.038 total
这是5.3倍的加速。而且看起来效果不错,至少用我试过的剧本。使用它有什么缺点?在
这可能不是个好主意。除此之外,这意味着不会将site packages目录添加到路径中,因此除了标准lib模块之外,您将无法导入任何内容:
您可以自己查看
site.py
,看看它在做什么。它只是普通库目录中的一个模块。至少在我的系统中,它看起来有四个主要功能:quit
和help
)如前所述,第一个可能是最关键的。第二种方法对于执行字符串I/O非常重要,这取决于系统的区域设置(即,如果默认编码设置不正确,则可能会出错)。第三个可能不那么重要。最后一个可能很重要,如果你想定制每个用户的路径(让用户有自己的个人库目录,等等)。在
执行此操作时,将丢失模块搜索路径的一大块:
根据您的系统,这可能会对可用的模块产生重大影响。在
其他可能中断的是语言环境(设置为系统默认值站点.py)而且,在windows上,有些编解码器将不可用(它们的别名是站点.py). 在
-S
标志执行以下操作:这意味着模块site不会在Python初始化期间导入。一个简单的描述是,这个模块“将把站点特定的路径附加到模块搜索路径中,并添加一些内置的“”。不做所有这些工作确实会使创业更快。在
以文档为指导,
-S
标志将导致:sys.path
添加其他模块。您可以通过启动python
和python -S
并在两个import sys; print sys.path
中执行以下操作来比较差异。许多模块将不可用,因此您将无法导入它们。在sitecustomize
的模块中定义)。在usercustomize
的模块中定义)。在对您的问题的简短回答是:是的,它使Python更快地启动,但是许多模块和定制代码将不可用或不可能。在
如果您主要导入自己的模块并编写自己的计算/代码,那么
-S
标志就可以了。但是,如果在不同的地方安装了Python模块,那么就不能使用带有-S
标志的模块。在相关问题 更多 >
编程相关推荐