Docker容器内Python运行速度慢于宿主机的问题求助
容器内Python运行速度慢于宿主机的问题排查
我遇到了Docker容器内运行Python的速度比宿主机系统慢的问题,无法解释这种差异。网上查了大量相关内容,试过的解决方案都没用。
基础测试情况
宿主机为最新版Arch Linux:
$ python --version Python 3.11.5 $ python -m timeit 'from random import randrange for _ in range(100): [randrange(50,500) for _ in range(randrange(30000,50000))]' 1 loop, best of 5: 3.07 sec per loop
使用python:3.11.5镜像测试:
$ docker run python:3.11.5-slim python --version Python 3.11.5 $ docker run python:3.11.5-slim python -m timeit 'from random import randrange for _ in range(100): [randrange(50,500) for _ in range(randrange(30000,50000))]' 1 loop, best of 5: 3.99 sec per loop
多次增加循环次数测试,结果一致:容器内运行时间比宿主机多0.5到1秒。试过--security-opt seccomp:unconfined参数,无明显改善。Docker不该有这么大开销,这是什么问题?
补充测试
Bash循环测试
宿主机测试:
$ bash -c "time for ((i=0; i<100; i++)); do for ((j=0; j<$(shuf -i 7000-8000 -n 1); j++)); do : done done"
手动连续运行10次,结果约2.1秒。
容器内测试:
$ docker run python:3.11.5-slim bash -c "time for ((i=0; i<100; i++)); do for ((j=0; j<$(shuf -i 7000-8000 -n 1); j++)); do : done done"
手动连续运行10次,结果约2.5秒。
Python复杂运算测试
宿主机测试:
$ python -m timeit '(82637**533333).bit_length()' 1 loop, best of 5: 1.36 sec per loop
容器内测试:
$ docker run python:3.11.5-slim python -m timeit '(82637**533333).bit_length()' 1 loop, best of 5: 1.63 sec per loop
内容的提问来源于stack exchange,提问作者fabien-michel
相关产品推荐
相关产品推荐

