[issue32003] multiprocessing.Array("b", 1), multiprocessing.Array("c", 1 ) wrong value returned

Samuel Nwokenkwo report at bugs.python.org
Sat Nov 11 00:16:04 EST 2017


Samuel Nwokenkwo <snwokenk at terpmail.umd.edu> added the comment:

I completely wrote the wrong code: 

So I'll copy and paste:

--------------------
Scenario 1
import multiprocessing

br = multiprocessing.Array('c', 1)

br[0] = 's'

print(br[:])

Scenario 1 result = "TypeError: one character bytes, bytearray or integer expected"

-------------------------

Scenario 2
import multiprocessing

br = multiprocessing.Array('b', 1)

br[0] = 's'.encode()

print(br[:])

Scenario 2 results = "TypeError: an integer is required (got type bytes)"

-----------------------------------

I believe my confusion is that I am thinking more of the python data type byte, which takes b'', than C language data type byte (which takes numbers from -127 to 128. This confusion is compounded when I do something like scenario 3:
-------------------------------

import multiprocessing

br = multiprocessing.Array('c', 1)

br[0] = 's'.encode()

print(br[:])

scenario 3 results: b's'
------------------

In the first scenario passing 's' i get an error, even though by definition 's' is a c char data type.

----------

_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue32003>
_______________________________________


More information about the Python-bugs-list mailing list