首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python多进程参数:深度复制?

问python多进程参数:深度复制?
EN

Stack Overflow用户
提问于 2011-05-13 03:10:20
回答 1查看 4.3K关注 0票数 18
代码语言:javascript
复制
from multiprocessing import Process
# c is a container
p = Process(target = f, args = (c,))
p.start()

我假设将c的深层副本传递给函数f,因为浅层副本在新进程的情况下没有意义(新进程无法访问调用进程的数据)。

但是这个深度拷贝是如何定义的呢?在copy.deepcopy()文档中有一个完整的set of notes,所有这些说明也适用于这里吗?multiprocessing文档什么也没说...

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-13 03:25:23

在创建Process实例时,Python会在幕后发出一个fork()。这将创建一个子进程,其内存空间与其父进程的内存空间完全相同--因此会复制fork时存在的所有内容。

在Linux上,这是通过“写入时复制”来实现的。从fork man page

fork()创建一个子进程,该子进程与父进程的不同之处仅在于其PID和PPID,以及资源利用率设置为0。不继承文件锁定和挂起信号。

在Linux下,fork()是使用写时复制页面实现的,因此它所带来的唯一损失就是复制父进程的页表以及为子进程创建一个独特的任务结构所需的时间和内存。

票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5983159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档