小编mku*_*kov的帖子

"docker stop"和"docker rm"有什么区别?

我最初认为这docker stop相当于vagrant halt,而且docker rmvagrant destroy.

但从根本上说,docker容器是无状态的,除了VOLUME语句之外docker rm,如果没有调用,AFAIK甚至会保留目录内容-v.

那么区别是什么呢?

docker

35
推荐指数
2
解决办法
9746
查看次数

每次为Pandas DataFrame获取相同的哈希值

我的目标是为DataFrame获取唯一的哈希值.我从.csv文件中获取它.整点是每次调用hash()时获取相同的哈希值.

我的想法是我创建了这个功能

def _get_array_hash(arr):
    arr_hashable = arr.values
    arr_hashable.flags.writeable = False
    hash_ = hash(arr_hashable.data)
    return hash_
Run Code Online (Sandbox Code Playgroud)

即调用底层numpy数组,将其设置为不可变状态并获取缓冲区的哈希值.

INLINE UPD.

截至2016年11月8日,此版本的功能不再起作用.相反,你应该使用

hash(df.values.tobytes())
Run Code Online (Sandbox Code Playgroud)

请参阅针对numpy数组最有效属性的注释.

内联UPD结束.

它适用于常规pandas数组:

In [12]: data = pd.DataFrame({'A': [0], 'B': [1]})

In [13]: _get_array_hash(data)
Out[13]: -5522125492475424165

In [14]: _get_array_hash(data)
Out[14]: -5522125492475424165 
Run Code Online (Sandbox Code Playgroud)

但后来我尝试将它应用于从.csv文件中获取的DataFrame:

In [15]: fpath = 'foo/bar.csv'

In [16]: data_from_file = pd.read_csv(fpath)

In [17]: _get_array_hash(data_from_file)
Out[17]: 6997017925422497085

In [18]: _get_array_hash(data_from_file)
Out[18]: -7524466731745902730
Run Code Online (Sandbox Code Playgroud)

有人可以解释一下,这怎么可能?

我可以创建新的DataFrame,比如

new_data = pd.DataFrame(data=data_from_file.values, 
            columns=data_from_file.columns, 
            index=data_from_file.index)
Run Code Online (Sandbox Code Playgroud)

它再次有效

In [25]: _get_array_hash(new_data)
Out[25]: -3546154109803008241

In …
Run Code Online (Sandbox Code Playgroud)

python pandas

22
推荐指数
3
解决办法
9588
查看次数

带有版本控制的 DRF 测试视图:版本化 url 检索

我之前为我的观点创建了一些测试。像那样

class TestUserRegistrationViewUserCreate(APITestCase):
def setUp(self):
    self.factory = APIRequestFactory()

def test_create_user(self):
    data = {
        'phone_number': '+79513332211',
        'password': 'qwerty'
    }
    request = self.factory.post(reverse('user'), data=data)
    response = CustomUserAPIView.as_view()(request)
    self.assertEqual(response.status_code, status.HTTP_201_CREATED)
Run Code Online (Sandbox Code Playgroud)

一切都很好,直到我被要求添加 API 版本控制。

DRF 支持本地版本控制http://www.django-rest-framework.org/api-guide/versioning/ 所以我只是使用它并将基于命名空间的版本控制添加到我的 API 中

REST_FRAMEWORK = {
    'DEFAULT_VERSIONING_CLASS': 'rest_framework.versioning.NamespaceVersioning'
}
Run Code Online (Sandbox Code Playgroud)

现在我需要重写我的视图单元测试以支持版本控制。

这个问题是,为了通过 获得版本化的 url reverse,我必须使用

from rest_framework.reverse import reverse

reverse('bookings-list', request=request)
Run Code Online (Sandbox Code Playgroud)

就像在文档中一样

但是我request在测试中没有对象,因为我正在自己制作一个对象,并且需要制作它的版本化 url。

我该怎么办?

PS 我可以在不使用 DRF 的情况下实现版本控制,使用视图装饰器和几个 utils 函数来解决这个问题,但是当我重新发明轮子时,这对我来说感觉很糟糕。另外,我也可能会忘记一些边缘情况。

python testing django django-rest-framework api-versioning

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

Docker中的Mongodb:numactl --interleave =所有解释

我正在尝试Dockerfile基于https://hub.docker.com/_/mongo/上的官方回购创建内存中的MongoDB .

dockerfile-entrypoint.sh我遇到过:

numa='numactl --interleave=all'
if $numa true &> /dev/null; then
    set -- $numa "$@"
fi
Run Code Online (Sandbox Code Playgroud)

基本上它存在numactl --interleave=all于原始docker命令之前numactl.

但我真的不明白这个NUMA政策的事情.你能否解释一下NUMA的真正含义,以及它--interleave=all代表什么?

为什么我们需要使用它来创建MongoDB实例?

numa mongodb docker numactl

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