python - Python3: Shared Array with strings between processes -
i want share list strings between processes, unfortunately receive error message "valueerror: character u+169ea10 not in range [u+0000; u+10ffff]".
here python 3 code:
from multiprocessing import process, array, lock ctypes import c_wchar_p import time def run_child(a): time.sleep(2) print(a[0]) # print foo print(a[1]) # print bar print(a[2]) # print baz print("set foofoo barbar bazbaz") a[0] = "foofoo" a[1] = "barbar" a[2] = "bazbaz" lock = lock() = array(c_wchar_p, range(3), lock=lock) p = process(target=run_child, args=(a,)) p.start() print("set foo bar baz") a[0] = "foo" a[1] = "bar" a[2] = "baz" time.sleep(4) print(a[0]) # print foofoo print(a[1]) # print barbar print(a[2]) # print bazbaz does knows doing wrong?
regards jonny
your ctype doesn't match content of array. initializing data should list of strings match ctype you're specifying. you're initializing range(3), evaluates integers, not strings.
should more like
a = array(c_wchar_p, ('', '', ''), lock=lock) from docs
c_wchar_p
represents c wchar_t * datatype, must pointer zero-terminated wide character string. constructor accepts integer address, or string.
Comments
Post a Comment