[pypy-issue] [issue1484] numpy pickling

mikefc tracker at bugs.pypy.org
Sun May 12 09:44:44 CEST 2013


New submission from mikefc <coolbutuseless at gmail.com>:

Trying to use a multiprocessing.Pool() to map a function onto a list of numpy 
arrays fails in latest pypy nightly (OSX).

Code attached. 

In python 2.7.x:
Not MP: [0.0, 0.0, 0.0, 0.0]
MP: [0.0, 0.0, 0.0, 0.0]

In pypy (OSX nightly latest)
Not MP: [0.0, 0.0, 0.0, 0.0]
<Float64 object at 0x101755110>
<Float64 object at 0x101755110>
Process PoolWorker-1:
Traceback (most recent call last):
  File "/Users/mike/python/pypy-latest/lib-python/2.7/multiprocessing/process.py", 
line 258, in _bootstrap
    self.run()
  File "/Users/mike/python/pypy-latest/lib-python/2.7/multiprocessing/process.py", 
line 114, in run
    self._target(*self._args, **self._kwargs)
  File "/Users/mike/python/pypy-latest/lib-python/2.7/multiprocessing/pool.py", 
line 99, in worker

----------
files: bugreport.txt
messages: 5710
nosy: mikefc, pypy-issue
priority: bug
status: unread
title: numpy pickling

________________________________________
PyPy bug tracker <tracker at bugs.pypy.org>
<https://bugs.pypy.org/issue1484>
________________________________________
-------------- next part --------------
Not MP: [0.0, 0.0, 0.0, 0.0]
<Float64 object at 0x101755110>
<Float64 object at 0x101755110>
Process PoolWorker-1:
Traceback (most recent call last):
  File "/Users/mike/python/pypy-latest/lib-python/2.7/multiprocessing/process.py", line 258, in _bootstrap
    self.run()
  File "/Users/mike/python/pypy-latest/lib-python/2.7/multiprocessing/process.py", line 114, in run
    self._target(*self._args, **self._kwargs)
  File "/Users/mike/python/pypy-latest/lib-python/2.7/multiprocessing/pool.py", line 99, in worker
Process PoolWorker-2:
Traceback (most recent call last):
  File "/Users/mike/python/pypy-latest/lib-python/2.7/multiprocessing/process.py", line 258, in _bootstrap
    put((job, i, result))
  File "/Users/mike/python/pypy-latest/lib-python/2.7/multiprocessing/queues.py", line 390, in put
    return send(obj)
  File "/Users/mike/python/pypy-latest/lib-python/2.7/pickle.py", line 1417, in dumps
    self.run()
  File "/Users/mike/python/pypy-latest/lib-python/2.7/multiprocessing/process.py", line 114, in run
    self._target(*self._args, **self._kwargs)
  File "/Users/mike/python/pypy-latest/lib-python/2.7/multiprocessing/pool.py", line 99, in worker
    Pickler(file, protocol).dump(obj)
  File "/Users/mike/python/pypy-latest/lib-python/2.7/pickle.py", line 224, in dump
    self.save(obj)
    put((job, i, result))
  File "/Users/mike/python/pypy-latest/lib-python/2.7/pickle.py", line 286, in save
  File "/Users/mike/python/pypy-latest/lib-python/2.7/multiprocessing/queues.py", line 390, in put
    f(self, obj) # Call unbound method with explicit self
  File "/Users/mike/python/pypy-latest/lib-python/2.7/pickle.py", line 548, in save_tuple
    return send(obj)
  File "/Users/mike/python/pypy-latest/lib-python/2.7/pickle.py", line 1417, in dumps
    save(element)
  File "/Users/mike/python/pypy-latest/lib-python/2.7/pickle.py", line 286, in save
    f(self, obj) # Call unbound method with explicit self
  File "/Users/mike/python/pypy-latest/lib-python/2.7/pickle.py", line 548, in save_tuple
    save(element)
  File "/Users/mike/python/pypy-latest/lib-python/2.7/pickle.py", line 286, in save
    f(self, obj) # Call unbound method with explicit self
  File "/Users/mike/python/pypy-latest/lib-python/2.7/pickle.py", line 600, in save_list
    self._batch_appends(iter(obj))
  File "/Users/mike/python/pypy-latest/lib-python/2.7/pickle.py", line 636, in _batch_appends
    save(tmp[0])
  File "/Users/mike/python/pypy-latest/lib-python/2.7/pickle.py", line 306, in save
    rv = reduce(self.proto)
TypeError: unsupported operand type for __getnewargs__: 'float64'
    Pickler(file, protocol).dump(obj)
  File "/Users/mike/python/pypy-latest/lib-python/2.7/pickle.py", line 224, in dump
    self.save(obj)
  File "/Users/mike/python/pypy-latest/lib-python/2.7/pickle.py", line 286, in save
    f(self, obj) # Call unbound method with explicit self
  File "/Users/mike/python/pypy-latest/lib-python/2.7/pickle.py", line 548, in save_tuple
    save(element)
  File "/Users/mike/python/pypy-latest/lib-python/2.7/pickle.py", line 286, in save
    f(self, obj) # Call unbound method with explicit self
  File "/Users/mike/python/pypy-latest/lib-python/2.7/pickle.py", line 548, in save_tuple
    save(element)
  File "/Users/mike/python/pypy-latest/lib-python/2.7/pickle.py", line 286, in save
    f(self, obj) # Call unbound method with explicit self
  File "/Users/mike/python/pypy-latest/lib-python/2.7/pickle.py", line 600, in save_list
    self._batch_appends(iter(obj))
  File "/Users/mike/python/pypy-latest/lib-python/2.7/pickle.py", line 636, in _batch_appends
    save(tmp[0])
  File "/Users/mike/python/pypy-latest/lib-python/2.7/pickle.py", line 306, in save
    rv = reduce(self.proto)
TypeError: unsupported operand type for __getnewargs__: 'float64'
MP:<Float64 object at 0x101755110>
Process PoolWorker-3:
<Float64 object at 0x101755110>
Traceback (most recent call last):
  File "/Users/mike/python/pypy-latest/lib-python/2.7/multiprocessing/process.py", line 258, in _bootstrap
    self.run()
  File "/Users/mike/python/pypy-latest/lib-python/2.7/multiprocessing/process.py", line 114, in run
    self._target(*self._args, **self._kwargs)
  File "/Users/mike/python/pypy-latest/lib-python/2.7/multiprocessing/pool.py", line 99, in worker
    put((job, i, result))
  File "/Users/mike/python/pypy-latest/lib-python/2.7/multiprocessing/queues.py", line 390, in put
Process PoolWorker-4:
Traceback (most recent call last):
  File "/Users/mike/python/pypy-latest/lib-python/2.7/multiprocessing/process.py", line 258, in _bootstrap
    return send(obj)
  File "/Users/mike/python/pypy-latest/lib-python/2.7/pickle.py", line 1417, in dumps
    self.run()
  File "/Users/mike/python/pypy-latest/lib-python/2.7/multiprocessing/process.py", line 114, in run
    self._target(*self._args, **self._kwargs)
  File "/Users/mike/python/pypy-latest/lib-python/2.7/multiprocessing/pool.py", line 99, in worker
    Pickler(file, protocol).dump(obj)
  File "/Users/mike/python/pypy-latest/lib-python/2.7/pickle.py", line 224, in dump
    self.save(obj)
  File "/Users/mike/python/pypy-latest/lib-python/2.7/pickle.py", line 286, in save
    f(self, obj) # Call unbound method with explicit self
  File "/Users/mike/python/pypy-latest/lib-python/2.7/pickle.py", line 548, in save_tuple
    save(element)
  File "/Users/mike/python/pypy-latest/lib-python/2.7/pickle.py", line 286, in save
    f(self, obj) # Call unbound method with explicit self
  File "/Users/mike/python/pypy-latest/lib-python/2.7/pickle.py", line 548, in save_tuple
    save(element)
  File "/Users/mike/python/pypy-latest/lib-python/2.7/pickle.py", line 286, in save
    put((job, i, result))
    f(self, obj) # Call unbound method with explicit self
  File "/Users/mike/python/pypy-latest/lib-python/2.7/pickle.py", line 600, in save_list
  File "/Users/mike/python/pypy-latest/lib-python/2.7/multiprocessing/queues.py", line 390, in put
    self._batch_appends(iter(obj))
  File "/Users/mike/python/pypy-latest/lib-python/2.7/pickle.py", line 636, in _batch_appends
    save(tmp[0])
  File "/Users/mike/python/pypy-latest/lib-python/2.7/pickle.py", line 306, in save
    rv = reduce(self.proto)
TypeError: unsupported operand type for __getnewargs__: 'float64'
    return send(obj)
  File "/Users/mike/python/pypy-latest/lib-python/2.7/pickle.py", line 1417, in dumps
    Pickler(file, protocol).dump(obj)
  File "/Users/mike/python/pypy-latest/lib-python/2.7/pickle.py", line 224, in dump
    self.save(obj)
  File "/Users/mike/python/pypy-latest/lib-python/2.7/pickle.py", line 286, in save
    f(self, obj) # Call unbound method with explicit self
  File "/Users/mike/python/pypy-latest/lib-python/2.7/pickle.py", line 548, in save_tuple
    save(element)
  File "/Users/mike/python/pypy-latest/lib-python/2.7/pickle.py", line 286, in save
    f(self, obj) # Call unbound method with explicit self
  File "/Users/mike/python/pypy-latest/lib-python/2.7/pickle.py", line 548, in save_tuple
    save(element)
  File "/Users/mike/python/pypy-latest/lib-python/2.7/pickle.py", line 286, in save
    f(self, obj) # Call unbound method with explicit self
  File "/Users/mike/python/pypy-latest/lib-python/2.7/pickle.py", line 600, in save_list
    self._batch_appends(iter(obj))
  File "/Users/mike/python/pypy-latest/lib-python/2.7/pickle.py", line 636, in _batch_appends
    save(tmp[0])
  File "/Users/mike/python/pypy-latest/lib-python/2.7/pickle.py", line 306, in save
    rv = reduce(self.proto)
TypeError: unsupported operand type for __getnewargs__: 'float64'


More information about the pypy-issue mailing list