在Docker容器中使用所有可用CPU的不那么麻烦的方法:

在Docker容器中使用所有可用CPU的不那么麻烦的方法:,docker,Docker,我使用以下可怕的语法告诉docker容器使用主机上的所有CPU: docker run --cpuset-cpus="0-`python3 -c "from multiprocessing import cpu_count; print(cpu_count() -1)"`" ubuntu:latest /bin/bash 有更好的方法吗?您可以使用nproc返回CPU核心数 为了得到CPU核数-1,POSIX外壳中的算术是用$和双括号完成的 docker run --cpuset-cpus=

我使用以下可怕的语法告诉docker容器使用主机上的所有CPU:

docker run  --cpuset-cpus="0-`python3 -c "from multiprocessing import cpu_count; print(cpu_count() -1)"`" ubuntu:latest /bin/bash

有更好的方法吗?

您可以使用
nproc
返回CPU核心数

为了得到CPU核数-1,POSIX外壳中的算术是用
$
和双括号完成的

docker run --cpuset-cpus="0-$(($(nproc)-1))" ubuntu:latest echo "hi"

getconf\u-processor\u-ONLN
可能是最短的方法,我相信这是POSIX,应该可以在OS X和Linux上使用。如果要使用所有cpu,为什么选择
cpu\u count()-1
而不是
cpu\u count()