from multiprocessing import Process
# c is a container
p = Process(target = f, args = (c,))
p.start()
Asumo una copia profunda de c
se pasa a funcionar porque f
copia superficial no tendría sentido en el caso de un nuevo proceso (el nuevo proceso no tiene acceso a los datos del proceso de llamada).argumentos de multiprocesamiento de python: ¿copia profunda?
Pero, ¿cómo se define esta copia profunda? Hay un total de set of notes en la documentación copy.deepcopy()
, ¿se aplican todas estas notas aquí también? La documentación de multiprocessing
no dice nada ...
+1. Tenga en cuenta que Windows usa un mecanismo diferente que 'fork()', pero los efectos son similares. –
Esto es correcto, pero hay que mencionar que no es cierto que no se copie nada. El recolector de basura de Python necesita mantener conteos de ref. Sin embargo, la sobrecarga de memoria para esto es insignificante (creo que 4kb por cada proceso). –