小编Chr*_*ris的帖子

列表的Python内存管理()

我正在创建一个元组,然后将其转换为包含以下代码的列表:

y=("hello","the","world")
y=list(y)
Run Code Online (Sandbox Code Playgroud)

python是否只是将对象标记为现在可变并可通过标签y访问,或者它是否创建了每个对象的完整副本,将它们添加到新的列表结构中,然后删除原始的不可变对象?

干杯

python

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

如何在外部公开 Kubernetes DNS

外部 DNS 服务器是否可以针对 K8s 集群 DNS 进行解析?我想让驻留在集群外部的应用程序能够解析容器 DNS 名称?

kubernetes

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

在支持OpenCL的程序之间共享GPU

有没有一种方法可以在两个独立的OpenCL程序之间共享GPU,或者更具体地说是在两个单独的进程之间共享GPU,这两个进程同时都要求GPU执行OpenCL内核?如果是这样,这是怎么做到的?

opencl

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

整个存储桶的预签名 url

我正在使用 gsutil 创建用于上传的预签名 URL。当命名桶中的对象时,我可以成功上传。gsutil 中的以下 snipit 可以与curl PUT 配合使用:

gsutil signurl -m PUT -d 10m -r eu ~/.ssh/mycreds.json gs://cjreyn-bucket-0/myobjectname.txt
Run Code Online (Sandbox Code Playgroud)

但是,当仅指定存储桶名称而不是其中的对象时,上传任意对象不起作用:

gsutil signurl -m PUT -d 10m -r eu ~/.ssh/mycreds.json gs://cjreyn-bucket-0/
Run Code Online (Sandbox Code Playgroud)

这会从curl 返回以下内容:

<?xml version='1.0' encoding='UTF-8'?><Error><Code>BucketAlreadyOwnedByYou</Code><Message>Your previous request to create the named bucket succeeded and you already own it.</Message></Error>
Run Code Online (Sandbox Code Playgroud)

我的curl行如下(为简洁起见,将签名的URL替换为):

curl -X PUT --upload-file myobj.txt "<mysignedurl>"
Run Code Online (Sandbox Code Playgroud)

是否甚至可以创建签名 URL 以用于向/从整个存储桶上传和下载,而不是针对其中的每个对象?

amazon-s3 amazon-web-services gsutil pre-signed-url google-cloud-platform

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

来自函数内部的Python不可变对象

我在这里询问了有关stackoverflow的上一个问题:函数调用中的Python不可变类型

其中明确表示,只对不可变对象的引用传递给函数,因此传递一个元组的功能并不会导致该对象的完整内存拷贝.

但是,根据:http://www.testingreflections.com/node/view/5126

"某些对象,如字符串,元组和数字,是不可变的. 在函数/方法中更改它们将创建一个新实例,并且函数/方法之外的原始实例不会更改."

我写了一些测试代码,其中一个不可变对象被传递给一个函数.正如所料,我可以通过作为函数头部分定义的parameter-name/reference修改对象,并且所有更改仅在被调用函数中保留,使原始对象不受影响.

所以我的问题是:

是否仅在尝试更改/修改传入的对象时才创建新实例?我猜测如果对象没有改变,只需要引用它就可以了.更重要的是,如果它确实在尝试修改时创建了一个副本,python如何管理内存?使用零拷贝/写时复制,或者它是否只在被调用的函数内创建一个完整的复制对象(整个对象的大小保留在内存中)?

python

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