Closed
Description
The following simple script:
from billiard import get_context
ctx = get_context('spawn')
def f(x):
return x*x
if __name__ == '__main__':
with ctx.Pool(2) as p:
print(p.map(f, list(range(10))))
fails with:
Traceback (most recent call last):
File "d.py", line 11, in <module>
with ctx.Pool(2) as p:
File "/home/antoine/billiard/billiard/context.py", line 165, in Pool
context=self.get_context())
File "/home/antoine/billiard/billiard/pool.py", line 1008, in __init__
self._create_worker_process(i)
File "/home/antoine/billiard/billiard/pool.py", line 1117, in _create_worker_process
w.start()
File "/home/antoine/billiard/billiard/process.py", line 122, in start
self._popen = self._Popen(self)
File "/home/antoine/billiard/billiard/context.py", line 341, in _Popen
return Popen(process_obj)
File "/home/antoine/billiard/billiard/popen_spawn_posix.py", line 39, in __init__
super(Popen, self).__init__(process_obj)
File "/home/antoine/billiard/billiard/popen_fork.py", line 24, in __init__
self._launch(process_obj)
File "/home/antoine/billiard/billiard/popen_spawn_posix.py", line 56, in _launch
reduction.dump(process_obj, fp)
File "/home/antoine/billiard/billiard/reduction.py", line 99, in dump
ForkingPickler(file, protocol).dump(obj)
File "/home/antoine/miniconda3/envs/dask27/lib/python2.7/pickle.py", line 224, in dump
self.save(obj)
File "/home/antoine/miniconda3/envs/dask27/lib/python2.7/pickle.py", line 331, in save
self.save_reduce(obj=obj, *rv)
File "/home/antoine/miniconda3/envs/dask27/lib/python2.7/pickle.py", line 401, in save_reduce
save(args)
File "/home/antoine/miniconda3/envs/dask27/lib/python2.7/pickle.py", line 286, in save
f(self, obj) # Call unbound method with explicit self
File "/home/antoine/miniconda3/envs/dask27/lib/python2.7/pickle.py", line 568, in save_tuple
save(element)
File "/home/antoine/miniconda3/envs/dask27/lib/python2.7/pickle.py", line 286, in save
f(self, obj) # Call unbound method with explicit self
File "/home/antoine/miniconda3/envs/dask27/lib/python2.7/pickle.py", line 754, in save_global
(obj, module, name))
pickle.PicklingError: Can't pickle <class 'billiard.pool.Process'>: it's not found as billiard.pool.Process