PyCharm:使用 docker 容器设置 python 解释器,但使用 `--cpuset-cpus`
Posted
技术标签:
【中文标题】PyCharm:使用 docker 容器设置 python 解释器,但使用 `--cpuset-cpus`【英文标题】:PyCharm: Using a docker container to set up the python interpreter but with `--cpuset-cpus` 【发布时间】:2022-01-16 10:19:45 【问题描述】:我已按照 JetBrains 的说明从 docker 容器映像设置 python 解释器。我的问题是,当我的机器上有更多可用 CPU 时,解释器似乎只使用了一个 CPU。我希望能够使用 --cpuset-cpus
参数使用更多处理器,但在配置解释器时我找不到任何地方可以传递它。
还有其他方法可以做到这一点吗?还是 pycharm 的当前限制?
【问题讨论】:
你在使用 Docker Desktop for Mac 吗? 您可能希望链接到您所指的 JetBrains 说明 是什么让你认为它只使用一个核心?你在运行python脚本吗? Python 有一个'GIL', 'Global Interpreter Lock',它使 python 成为单线程(我对 python 的最大抱怨)。在 python 中使用多核并非易事 > 你在使用 Docker Desktop for Mac 吗? @NickODell 是的,我是 > 是什么让您认为它只使用一个核心? @nanotek 是的,脚本花费的时间太长了...... 【参考方案1】:所以...经过一番谷歌搜索和大量试验和错误,这就是我设法做到的。
如果您尝试仅使用 dockerfile 在 docker 映像中设置 python 解释器,则无法处理映像的部署。假设你想使用下面的dockerfile
:
ARG BUILD_PYTHON_VERSION=3.8.4
############
# Builder layer
FROM python:$BUILD_PYTHON_VERSION-slim-buster as builder
WORKDIR /vsm
# Install Requirements
## Copy Files
COPY pip.conf .
COPY requirements.txt .
COPY requirements-dev.txt .
ARG PIP_CONFIG_FILE=pip.conf
## Download dependencies locally
RUN pip install --no-cache-dir --upgrade pip && \
pip install --no-cache-dir -r requirements.txt && \
pip install --no-cache-dir -r requirements-dev.txt \
在 PyCharm 中,界面如下所示:
这不允许您传递参数,例如:cpus
绕过这个问题的一种方法是使用docker-compose.yaml
。因此,假设您在 repo 的根目录中有以下文件。
...
├── dev.Dockerfile # contains the above code from bullet 1
├── docker-compose.yml
...
而docker-compose.yaml
的定义如下:
---
version: "3.9"
services:
dev-env:
build:
context: .
dockerfile: dev.Dockerfile
volumes:
- .:/Users/Vortexa/Github/bon-voyage # Mount the current directory using the host's absolute path
deploy:
resources:
limits:
cpus: '8'
memory: 16384M
然后,如果您从 pycharm 提供的下拉列表中选择 docker-compose 选项:
并选择dev-env
作为要部署的服务,然后将构建和部署docker环境并访问指定的CPU和内存。
您可能会收到一条错误消息,指出请求的资源不可用。如果您的机器上确实有更多的内核和内存要使用,那么只需为您的 docker 引擎配置资源即可:
希望这对前来寻找的人有所帮助!
【讨论】:
以上是关于PyCharm:使用 docker 容器设置 python 解释器,但使用 `--cpuset-cpus`的主要内容,如果未能解决你的问题,请参考以下文章
在远程服务器上的 docker 容器中设置本地 PyCharm 远程解释器
如何将 PyCharm 连接到位于 Docker 容器内的 python 解释器?