【问题标题】:PyCharm: Using a docker container to set up the python interpreter but with `--cpuset-cpus`PyCharm:使用 docker 容器设置 python 解释器,但使用 `--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 是的,脚本花费的时间太长了......

标签: docker pycharm multiprocessing


【解决方案1】:

所以...经过一番谷歌搜索和大量试验和错误,这就是我设法做到的。

  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 中,界面如下所示:

  2. 这不允许您传递参数,例如:cpus

  3. 绕过这个问题的一种方法是使用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
    
  4. 然后,如果您从 pycharm 提供的下拉列表中选择 docker-compose 选项:

    并选择dev-env作为要部署的服务,然后将构建和部署docker环境并访问指定的CPU和内存。

  5. 您可能会收到一条错误消息,指出请求的资源不可用。如果您的机器上确实有更多的内核和内存要使用,那么只需为您的 docker 引擎配置资源即可:

希望这对前来寻找的人有所帮助!

【讨论】:

    猜你喜欢
    • 2021-03-05
    • 2019-05-12
    • 2019-12-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-26
    • 2016-06-24
    • 2016-04-13
    • 2018-12-22
    相关资源
    最近更新 更多