python multiprocessing arguments: deep copy?

后端 未结 1 2103
深忆病人
深忆病人 2020-12-18 19:46
from multiprocessing import Process
# c is a container
p = Process(target = f, args = (c,))
p.start()

I assume a deep copy of c is pas

相关标签:
1条回答
  • 2020-12-18 20:16

    When you create a Process instance, under the hood Python issues a fork(). This creates a child process whose memory space is an exact copy of its parent -- so everything existing at the time of the fork is copied.

    On Linux this is made efficient through "copy-on-write". From the fork man page:

    fork() creates a child process that differs from the parent process only in its PID and PPID, and in the fact that resource utilizations are set to 0. File locks and pending signals are not inherited.

    Under Linux, fork() is implemented using copy-on-write pages, so the only penalty that it incurs is the time and memory required to duplicate the parent's page tables, and to create a unique task structure for the child.

    0 讨论(0)
提交回复
热议问题