Multiprocessing (windows 10) BrokenPipeError: [Errno 32] Broken pipe

I enclosed all script within an if __name__ == '__main__':

"""
Similar to disaster_model.py, but for arbitrary
deterministics which are not not working with Theano.
Note that gradient based samplers will not work.
"""


import pymc3 as pm
from theano.compile.ops import as_op
import theano.tensor as tt
from numpy import arange, array, empty

if __name__ == '__main__':
    
    __all__ = ['disasters_data', 'switchpoint', 'early_mean', 'late_mean', 'rate',
               'disasters']
    
    # Time series of recorded coal mining disasters in the UK from 1851 to 1962
    disasters_data = array([4, 5, 4, 0, 1, 4, 3, 4, 0, 6, 3, 3, 4, 0, 2, 6,
                            3, 3, 5, 4, 5, 3, 1, 4, 4, 1, 5, 5, 3, 4, 2, 5,
                            2, 2, 3, 4, 2, 1, 3, 2, 2, 1, 1, 1, 1, 3, 0, 0,
                            1, 0, 1, 1, 0, 0, 3, 1, 0, 3, 2, 2, 0, 1, 1, 1,
                            0, 1, 0, 1, 0, 0, 0, 2, 1, 0, 0, 0, 1, 1, 0, 2,
                            3, 3, 1, 1, 2, 1, 1, 1, 1, 2, 4, 2, 0, 0, 1, 4,
                            0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1])
    years = len(disasters_data)
    
    
    @as_op(itypes=[tt.lscalar, tt.dscalar, tt.dscalar], otypes=[tt.dvector])
    def rate_(switchpoint, early_mean, late_mean):
        out = empty(years)
        out[:switchpoint] = early_mean
        out[switchpoint:] = late_mean
        return out
    
    
    with pm.Model() as model:
    
        # Prior for distribution of switchpoint location
        switchpoint = pm.DiscreteUniform('switchpoint', lower=0, upper=years)
        # Priors for pre- and post-switch mean number of disasters
        early_mean = pm.Exponential('early_mean', lam=1.)
        late_mean = pm.Exponential('late_mean', lam=1.)
    
        # Allocate appropriate Poisson rates to years before and after current
        # switchpoint location
        idx = arange(years)
        rate = rate_(switchpoint, early_mean, late_mean)
    
        # Data likelihood
        disasters = pm.Poisson('disasters', rate, observed=disasters_data)
    
        # Use slice sampler for means
        step1 = pm.Slice([early_mean, late_mean])
        # Use Metropolis for switchpoint, since it accomodates discrete variables
        step2 = pm.Metropolis([switchpoint])
    
        # Initial values for stochastic nodes
        start = {'early_mean': 2., 'late_mean': 3.}
    
        tr = pm.sample(1000, tune=500, start=start, step=[step1, step2], cores=2)
        pm.traceplot(tr)

Still I see the same error

  File "<ipython-input-4-dcd32d519507>", line 61, in <module>
    tr = pm.sample(1000, tune=500, start=start, step=[step1, step2], cores=2)

  File "C:\Users\Mukesh\Anaconda3\lib\site-packages\pymc3\sampling.py", line 449, in sample
    trace = _mp_sample(**sample_args)

  File "C:\Users\Mukesh\Anaconda3\lib\site-packages\pymc3\sampling.py", line 996, in _mp_sample
    chain, progressbar)

  File "C:\Users\Mukesh\Anaconda3\lib\site-packages\pymc3\parallel_sampling.py", line 275, in __init__
    for chain, seed, start in zip(range(chains), seeds, start_points)

  File "C:\Users\Mukesh\Anaconda3\lib\site-packages\pymc3\parallel_sampling.py", line 275, in <listcomp>
    for chain, seed, start in zip(range(chains), seeds, start_points)

  File "C:\Users\Mukesh\Anaconda3\lib\site-packages\pymc3\parallel_sampling.py", line 182, in __init__
    self._process.start()

  File "C:\Users\Mukesh\Anaconda3\lib\multiprocessing\process.py", line 105, in start
    self._popen = self._Popen(self)

  File "C:\Users\Mukesh\Anaconda3\lib\multiprocessing\context.py", line 223, in _Popen
    return _default_context.get_context().Process._Popen(process_obj)

  File "C:\Users\Mukesh\Anaconda3\lib\multiprocessing\context.py", line 322, in _Popen
    return Popen(process_obj)

  File "C:\Users\Mukesh\Anaconda3\lib\multiprocessing\popen_spawn_win32.py", line 65, in __init__
    reduction.dump(process_obj, to_child)

  File "C:\Users\Mukesh\Anaconda3\lib\multiprocessing\reduction.py", line 60, in dump
    ForkingPickler(file, protocol).dump(obj)

BrokenPipeError: [Errno 32] Broken pipe