小编Tep*_*erä的帖子

Python中的类不变量

类不变量肯定在编码中很有用,因为它们可以在检测到清晰编程错误时提供即时反馈,并且还可以提高代码可读性,因为它们可以明确说明哪些参数和返回值.我确信这也适用于Python.

但是,通常在Python中,对参数的测试似乎不是"pythonic"做事的方式,因为它违背了鸭子的成语习惯.

我的问题是:

  1. 什么是Pythonic在代码中使用断言的方法?

    例如,如果我有以下功能:

    def do_something(name, path, client):
        assert isinstance(name, str)
        assert path.endswith('/')
        assert hasattr(client, "connect")
    
    Run Code Online (Sandbox Code Playgroud)
  2. 更一般地说,当断言太多时?

我很高兴听到你对此的看法!

python invariants

7
推荐指数
2
解决办法
2306
查看次数

是否可以在 docker 容器内以非 root 用户身份运行 tensorflow-gpu?

我正在设置一个 docker 容器,以使用 nvidia GPU 使用 tensorflow-gpu 进行开发。我希望在容器内以非 root 用户身份完成所有这些工作。该容器以 root 用户身份完美运行。任何想法我需要做什么来配置容器以与非 root 用户一起工作?

我试图更改容器内用户的权限,但这似乎不起作用。此外,没有设法使用谷歌找到任何信息或相关问题,这将有助于解决这个问题。

我还尝试比较 root 和实际用户之间的环境设置,但也没有从那里找到线索。另请注意, nvidia-smi 调用适用于 root 和非 root 用户。

我使用此链接作为起点构建了图像:https : //gitlab.com/nvidia/cuda/blob/ubuntu16.04/9.0/runtime/cudnn7/Dockerfile

最重要的是,我已经安装了 Python3.5 和必要的包,包括 tensorflow-gpu。

此外,我已将用户创建到图像中,如下所示。

ARG USER_NAME
ARG USER_ID 
ARG GROUP_ID

RUN groupadd -g 1004 ${GROUP_ID}
RUN useradd -rml -d /home/${USER_NAME} -s /bin/bash -g ${GROUP_ID} -u ${USER_ID} ${USER_NAME} 
Run Code Online (Sandbox Code Playgroud)

这样,容器创建的文件在宿主机中归我所有,这是想要的结果。这工作正常。

我已经以 root 用户的身份尝试过这个设置并且它有效。

$ sudo docker run -u root -it --runtime=nvidia -v /home/$(whoami):/home/$(whoami) gpu-env bash
$ python3
>>> import tensorflow as tf
>>> …
Run Code Online (Sandbox Code Playgroud)

linux nvidia docker tensorflow

7
推荐指数
0
解决办法
358
查看次数

标签 统计

docker ×1

invariants ×1

linux ×1

nvidia ×1

python ×1

tensorflow ×1