프로세스가 자식을 포크 할 때 자식은 아버지의 변수 을 복사하지 않지만 자식 프로세스가 아버지 변수의 값을 변경하면 새로운 변수가 만들어 지므로이 복사본을 쓰기 위해 호출합니다. 이제 다음 코드를 입력하십시오 :파이썬 복사본 작성, 진짜?
# 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)
당신은 어쩌면이 같은 결과를 실행하는 경우 :
parent id=4321407056 value=[2]
child id=4321407056 value=[324]
내 질문은 :
(1) 변수 값의 메모리 주소, 그것은 동일하다 4321407056. 하지만 값을 변경 했으므로 변수에 새 값을 쓰면 메모리 주소가 변경되지 않는 이유는 무엇입니까?
(2) 메모리 주소가 같은 경우 왜 다른 값을 가지며 하나는 [2]이고 다른 하나는 [234]입니까?
https://en.wikipedia.org/wiki/Virtual_memory – user2357112
가상 메모리는 두 프로세스 모두 동일한 주소를 설명하지만 할당 된 후 주소가 변경되지 않은 이유는 무엇입니까? – geckos