On 3/28/2017 2:51 PM, Frank Miles wrote:
I tried running a bit of example code from the py2.7 docs
(16.6.1.2. Exchanging objects between processes)
only to have it fail. The code is simply:
# ------------
from multiprocessing import Process, Queue
def f(q):
q.put([42, None, 'hello'])
if __name__ == '__main__':
q = Queue()
p = Process(target=f, args=(q,))
p.start()
print q.get() # prints "[42, None, 'hello']"
p.join()
# ---------------
Cut and pasted, this runs as specified on 2.7.13 on Win 10
But what happens is f() fails:
Traceback (most recent call last):
File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap
self.run()
File "/usr/lib/python2.7/multiprocessing/process.py", line 114, in run
self._target(*self._args, **self._kwargs)
File "x.py", line 4, in f
q.put([42, None, "Hello"])
AttributeError: 'int' object has no attribute 'put'
This says that the arg bound to q in f is an int rather than a Queue.
Are you sure that you posted the code that you ran?
This is on a Debian jessie host, though eventually it needs to
run on a raspberry pi 3 {and uses other library code that needs
py2.7}.
Thanks in advance for those marvelous clues!
--
Terry Jan Reedy
--
https://mail.python.org/mailman/listinfo/python-list