docker加速python,为什么?

时间:2014-12-06 19:48:47

标签: python macos ubuntu docker

所以我第一次在我的mac上玩docker。我在标准教程中使用了boot2docker,我在ubuntu映像中开始提示。

docker pull ubuntu
docker run -i -t ubuntu /bin/bash

当我在码头工作时,我开始了我的第一个实验,看看性能是否会下降。从命令行我将使用python timeit模块快速检查一些基本的性能指标。

Mac Python结果
$ python3.4 -m timeit '"-".join(str(n) for n in range(100))'
10000 loops, best of 3: 37.7 usec per loop
$ python3.4 -m timeit '"-".join([str(n) for n in range(100)])'
10000 loops, best of 3: 34.2 usec per loop
$ python3.4 -m timeit '"-".join(map(str, range(100)))'
10000 loops, best of 3: 26.2 usec per loop
Docker Python结果
> python3 -m timeit '"-".join(str(n) for n in range(100))'
10000 loops, best of 3: 30 usec per loop
> python3 -m timeit '"-".join([str(n) for n in range(100)])'
10000 loops, best of 3: 26.9 usec per loop
> python3 -m timeit '"-".join(map(str, range(100)))'
10000 loops, best of 3: 20.2 usec per loop

看起来奇怪的是,在我的mac上运行的docker ubuntu实际上比mac上的python运行python代码更快。为什么会出现这种情况有什么原因吗?

编辑

我可以确认两个python版本都以64位运行。

Mac Python
python3 -c 'import sys;print("%x" % sys.maxsize, sys.maxsize > 2**32)'
7fffffffffffffff True
Ubuntu Python
python3.4 -c 'import sys;print("%x" % sys.maxsize, sys.maxsize > 2**32)'
7fffffffffffffff True

1 个答案:

答案 0 :(得分:1)

这更多地是关于操作系统的差异而不是码头工人的性能。测量应用程序的性能可能很棘手。

最重要的是,OS X有大量的进程可以与您的测试竞争,而OS X可能不会给您的测试带来高优先级。

在大多数情况下,容器应该与原生环境(有时更好)一样好。但是,您的测试应该使容器能够正常工作。当您的应用程序进行系统调用和访问I / O时,Docker将需要增加开销,因此这些应该都包含在您的测试中。

IBM去年写了一篇关于Linux Container vs. Native env问题的论文。

http://domino.research.ibm.com/library/cyberdig.nsf/papers/0929052195DD819C85257D2300681E7B/$File/rc25482.pdf