为什么python在windows上运行得如此缓慢?

为什么python在windows上运行得如此缓慢?,python,benchmarking,Python,Benchmarking,今天我学习了Pytones,所以我决定看看我的各种环境是什么样的。我在我的笔记本电脑上运行了pystones,它在裸机上运行windows,得到了这些结果 Python 2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> from

今天我学习了Pytones,所以我决定看看我的各种环境是什么样的。我在我的笔记本电脑上运行了pystones,它在裸机上运行windows,得到了这些结果

Python 2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from test import pystone
>>> for i in range(0,10):
...   pystone.pystones()
...
(1.636334799754252, 30556.094026423627)
(2.1157907919853756, 23631.82607155689)
(2.5324817108003685, 19743.479207278437)
(2.541626695533182, 19672.4405231788)
(2.536022267835051, 19715.915208695682)
(2.540327088340973, 19682.50475676099)
(2.544761766911506, 19648.20465716261)
(2.540296805235016, 19682.739393664764)
(2.533851636391205, 19732.804905346253)
(2.536483186973612, 19712.3325148696)
然后我在一些linux虚拟机上运行了它,性能提高了2.7-3.4倍。因此,我在笔记本电脑上启动了vmware Linux VM,并重新运行了相同的测试,结果如下:

Python 2.7.2+ (default, Oct  4 2011, 20:03:08) 
[GCC 4.6.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> for i in range(0,10):
...   pystone.pystones()
... 
(1.75, 28571.428571428572)
(1.17, 42735.042735042734)
(1.6600000000000001, 30120.48192771084)
(1.8399999999999999, 27173.913043478264)
(1.8200000000000003, 27472.52747252747)
(1.8099999999999987, 27624.30939226521)
(1.3099999999999987, 38167.938931297744)
(1.7800000000000011, 28089.88764044942)
(1.8200000000000038, 27472.527472527414)
(1.490000000000002, 33557.04697986573)
我不太明白在同一个windows中运行的linux虚拟机如何比在windows下运行在同一裸机上的python更快

windows上的python有什么不同之处,它在裸操作系统上的执行速度比在同一机器上运行Linux的虚拟机上慢

  • 更多细节 Windows平台Win7x64 在两种平台上运行的32位python 在VMWare中运行windows平台的32位linux虚拟机

  • 我不能回答你的问题,但是考虑一下可能会有所不同的事情:

    • 您正在使用不同版本的Python。“2.7.2+”表示您的linux Python是通过版本控制签出而不是发行版构建的

    • 它们是用不同的编译器编译的(可以想象,有意义的是不同的优化级别)

    • 你没有提到复制这么多。如果你没有这样做,那很可能是侥幸

    • 您的虚拟机可能计时不准确

    • 正如Ignacio Vazquez Abrams指出的那样,您正在链接Python依赖项的不同实现,特别是libc

    • 我不知道pystone的实际基准是什么样的,但许多事情的工作方式不同——unicode处理或磁盘IO等可能是系统相关的因素


    您是否在该Windows机箱上运行防病毒软件?这或许可以解释。我个人喜欢将Python、Cygwin和我的源代码目录添加到防病毒排除列表中——我想我得到了一个小的但明显的加速。也许这可以解释你的结果。

    在windows 10上也有类似的问题-这是因为windows defender

    我必须在windows defender设置中排除python目录和进程,然后重新启动计算机


    以前:我必须等待大约20秒才能运行任何python代码—现在是毫秒。

    对启动进行基准测试,但在windows上只需初始化一些缓慢的模块。每次启动时都能为我节省一秒钟的小技巧:

    import os
    import mimetypes #mimetypes gets imported later in dep chain
    
    if __name__ == "__main__":
       # stub this out, so registry db wont ever be read, not needed
       mimetypes._winreg = None
    

    缓慢的另一个原因是,多个标准库模块在导入时编译并缓存它们的正则表达式。re.compile在windows上的运行速度似乎很慢,这取决于同时运行的其他进程。Python是否在VM和64位Linux上运行?我看到windows版本是32位的。确保你在比较苹果和苹果。Windows处理文件的速度似乎不如Linux。见[这是另一个问题][1]。[1] 当前位置在我写这篇文章之前,我复制了三次。是的,不过我没提。太好了!我有和你类似的问题,让我试试我的Win10,然后告诉你结果。