小编Ram*_*ati的帖子

ValueError:解包时的包装循环

Python3测试用例(doctests)失败了我的示例代码.但同样在Python2中运行良好.

test.py

class Test(object):
    def __init__(self, a=0):
        self.a = a

    def __getattr__(self, attr):
        return Test(a=str(self.a) + attr)
Run Code Online (Sandbox Code Playgroud)

tst.py

from test import Test

t = Test()
Run Code Online (Sandbox Code Playgroud)

运行测试用例: python3 -m doctest -v tst.py

错误:

Traceback (most recent call last):
  File "/usr/lib/python3.6/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/usr/lib/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/usr/lib/python3.6/doctest.py", line 2787, in <module>
    sys.exit(_test())
  File "/usr/lib/python3.6/doctest.py", line 2777, in _test
    failures, _ = testmod(m, verbose=verbose, optionflags=options)
  File "/usr/lib/python3.6/doctest.py", line 1950, in testmod
    for test …
Run Code Online (Sandbox Code Playgroud)

python doctest

6
推荐指数
2
解决办法
956
查看次数

Numpy 点运算未使用所有 cpu 核心

  • 我正在对两个矩阵进行 numpy 点积(假设 a 和 b 是两个矩阵)。

  • 当 a 的形状为 (10000, 10000) 且 b 的形状为 (1, 10000) 时,numpy.dot(a, bT) 正在使用所有 CPU 核心。

  • 但是,当 a 的形状为 (10000, 10000) 且 b 的形状为 (2, 10000) 时,numpy.dot(a, bT) 不会使用所有 CPU 核心(仅使用一个)。

当 b 的行大小从 2 到 15(即从 (2, 10000) 到 (15, 10000))时,就会发生这种情况。

例子:

import numpy as np

a = np.random.rand(10**4, 10**4)

def dot(a, b_row_size):
    b = np.random.rand(b_row_size, 10**4)

    for i in range(10):
        # dot operation
        x = np.dot(a, b.T)

# Using all CPU cores …
Run Code Online (Sandbox Code Playgroud)

python numpy openblas python-3.5

5
推荐指数
1
解决办法
4695
查看次数

忽略 pkg_resources.ContextualVersionConflict

我已经构建了一个安装 kwikapi==0.4.5 和 requests==2.22.0 的 python 模块。但是 kwikapi 有 requests==2.18.4。

现在,当我安装并运行我的包时,出现错误pkg_resources.ContextualVersionConflict: (requests 2.22.0 (/tmp/test_vir3.7/lib/python3.7/site-packages), Requirement.parse('requests==2.18.4'), {'kwikapi'})

现在,如果我安装 requests==2.18.4(pip install requests==2.18.4) 并运行,那么错误是pkg_resources.DistributionNotFound: The 'requests==2.22.0' distribution was not found and is required by my-pack.

我可以使用 2.18.4 而不是 2.22.0 请求来解决这个问题。但是如果我在请求和 kwikapi 中都有不同版本的相同模块,这个问题就会再次出现。

有没有办法忽略/解决这个错误?

设置/重现

Module structure

.
??? my_pack
?   ??? __init__.py
??? setup.py
Run Code Online (Sandbox Code Playgroud)

setup.py

.
??? my_pack
?   ??? __init__.py
??? setup.py
Run Code Online (Sandbox Code Playgroud)

__init__.py

from setuptools import setup, find_packages

version = "0.0.1"
setup(
    name="my_pack",
    packages=find_packages("."),
    package_dir={"my_pack": "my_pack"},
    include_package_data=True,
    install_requires=[ …
Run Code Online (Sandbox Code Playgroud)

python pip virtualenv python-3.x

5
推荐指数
0
解决办法
1994
查看次数

未知模式:Docker堆栈中的主机部署

我的主要目标是在公开端口并在docker swarm中进行堆栈部署时使Nginx服务仅在一台机器上可用(通常,我们可以从docker swarm集群中的任何机器上访问公开的服务)。为此,我看到了 mode: host选择。

但是当我在docker compose文件中使用它并进行堆栈部署时,我得到了错误service nginx: Unknown mode: host

nginx.yml文件

version: "3.4"
services:
    nginx:
        image: ramidavalapati/nginx:tag1
        deploy:
            mode: host
            restart_policy:
                condition: on-failure
            placement:
                constraints: [node.hostname == ram-ThinkPad-E470]
        ports:
            - 80:80
            - 443:443
        volumes:
            - /home/ram/nginxDocker/nginx.conf:/etc/nginx/nginx.conf
            - /home/ram/nginxDocker/logs/access.log:/var/log/nginx/access.log
            - /home/ram/nginxDocker/logs/error.log:/var/log/nginx/error.log
        networks:
            - all
        command: ["nginx", '-g', 'daemon off;']

networks:
    all:
        external: true
Run Code Online (Sandbox Code Playgroud)

部署: $ sudo docker stack deploy -c nginx.yml nginx

docker-swarm

3
推荐指数
1
解决办法
1660
查看次数

使用GCC编译C程序,以便它可以使用linux中的所有cpu内核

我有一个示例C程序用于添加.当我使用GCC编译并运行它时,它只使用一个CPU内核.

有没有办法编译C程序,以便它可以使用Linux中的所有CPU核心.

我曾经编译过像 gcc -O3 malloc.c

码:

#include <stdio.h>
#include <time.h>
#include <malloc.h>

int main() {
        float *ptr;
        unsigned long long i;

        ptr = (float*) malloc(8000000000 * sizeof(float));

        for(i=0; i<8000000000; i++) {
                ptr[i] = i/10000;
        }

        clock_t tic = clock();

        for(i=0; i<8000000000; i++) {
                ptr[i] = (i/10000)+1.0;
        }

        clock_t toc = clock();

        printf("Elapsed: %f seconds\n", (double)(toc - tic) / CLOCKS_PER_SEC);

        return 0;
}
Run Code Online (Sandbox Code Playgroud)

c linux gcc

2
推荐指数
1
解决办法
2767
查看次数

Julia 无法在 docker 容器中加载大数据 [总线错误]

我有一个加载 8 GB 数据的 Julia 程序。它在我的本地机器上运行良好。

但是当我在 docker 容器中尝试它时,它没有加载数据并给出总线错误。它可以很好地处理 docker 容器中 20 MB 的小数据。

Dockerfile

FROM ubuntu:16.04

WORKDIR /julia

RUN apt-get -y update

RUN apt-get -y install unzip

RUN apt-get -y install cmake

RUN apt-get -y install clang

RUN apt-get -y install wget

RUN cd /tmp/

RUN wget "https://julialang.s3.amazonaws.com/bin/linux/x64/0.5/julia-0.5.0-linux-x86_64.tar.gz"

RUN tar -xzvf julia-0.5.0-linux-x86_64.tar.gz

RUN mv julia-3c9d75391c/ ~/julia

ENV PATH="/root/julia/bin:${PATH}"

RUN julia --eval 'Pkg.add("JSON")'

RUN julia --eval 'Pkg.add("HttpServer")'

RUN julia --eval 'Pkg.add("URIParser")'

RUN julia --eval 'Pkg.clone("https://github.com/deep-compute/AdaGram.jl.git")'

RUN julia --eval 'Pkg.build("AdaGram")'

CMD …
Run Code Online (Sandbox Code Playgroud)

julia docker docker-container

1
推荐指数
1
解决办法
1763
查看次数