类不变量肯定在编码中很有用,因为它们可以在检测到清晰编程错误时提供即时反馈,并且还可以提高代码可读性,因为它们可以明确说明哪些参数和返回值.我确信这也适用于Python.
但是,通常在Python中,对参数的测试似乎不是"pythonic"做事的方式,因为它违背了鸭子的成语习惯.
我的问题是:
什么是Pythonic在代码中使用断言的方法?
例如,如果我有以下功能:
def do_something(name, path, client):
assert isinstance(name, str)
assert path.endswith('/')
assert hasattr(client, "connect")
Run Code Online (Sandbox Code Playgroud)更一般地说,当断言太多时?
我很高兴听到你对此的看法!
我正在设置一个 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)