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 解释器?

ubuntu+docker+pycharm环境深度学习远程炼丹使用教程

Pycharm 部署 Docker 容器解释器

Pycharm docker-compose解释器不加载库

pycharm如何远程连接服务器上的docker容器