Values in subprocesses deviating from main thread

I wrote this simple program.

import multiprocessing


d = {"what":'1'}
import time
from multiprocessing import Pool


def square(x):
    print("Adding process:", x)
    d[x]=x
    print("Inner d", d)

if __name__ == "__main__":
    pool = Pool()
    pool.map(square, range(0, 5))
    pool.close()
    print(d)

Output

('Adding process:', 0)
('Inner d', {0: 0, 'what': '1'})
('Adding process:', 1)
('Inner d', {0: 0, 1: 1, 'what': '1'})
('Adding process:', 2)
('Inner d', {0: 0, 1: 1, 'what': '1', 2: 2})
('Adding process:', 3)
('Inner d', {0: 0, 1: 1, 'what': '1', 3: 3, 2: 2})
('Adding process:', 4)
('Inner d', {0: 0, 1: 1, 'what': '1', 3: 3, 4: 4, 2: 2})
{'what': '1'}

I am new to multiprocessing, so I wanted to know. How do I reload the value of d in the sub processes.