lors d'un processus fork un enfant, l'enfant ne copiera pas la variable du père mais si le processus enfant change la valeur de la variable père, il créera une nouvelle variable, nous appelons cette copie sur écriture, maintenant s'il vous plaît code ci-dessous:copie python sur écrire, vraiment?
# coding=utf-8
import os
value = []
res = os.fork()
if res == 0:
value = [324]
print 'child id={id} value={value}'.format(id=id(value), value=value)
else:
value = [2]
print 'parent id={id} value={value}'.format(id=id(value), value=value)
si vous l'exécutez, le résultat peut-être comme ceci:
parent id=4321407056 value=[2]
child id=4321407056 value=[324]
ma question est:
(1) l'adresse de mémoire de valeur variable est la même, il est 4321407056. mais j'ai changé la valeur, cela signifie que j'écris la nouvelle valeur à la variable, pourquoi pas l'adresse de mémoire n'est pas changé? 2) s'ils ont la même adresse mémoire, pourquoi ont-ils la valeur différente, l'un est [2], l'autre est [234]?
https://en.wikipedia.org/wiki/Virtual_memory – user2357112
La mémoire virtuelle explique la même adresse pour les deux processus, mais encore pourquoi l'adresse n'a pas changé après assignmet? – geckos