4

I want to share a list with strings between processes, but unfortunately I receive the error message "ValueError: character U+169ea10 is not in range [U+0000; U+10ffff]".

Here is the Python 3 code:

from multiprocessing import Process, Array, Lock
from 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()
a = 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 someone knows what I am doing wrong?

Regards Jonny

asked Feb 5, 2016 at 22:27
1
  • You mast use bytes instead of strings if you are dealing with ctypes. Commented Feb 5, 2016 at 22:36

1 Answer 1

1

Your ctype doesn't match the content of your Array. Your initializing data should be a list of strings to match the ctype you're specifying. You're initializing it with range(3), which evaluates to integers, not strings.

Should be more like

a = Array(c_wchar_p, ('', '', ''), lock=lock)

From the docs

c_wchar_p

Represents the C wchar_t * datatype, which must be a pointer to a zero-terminated wide character string. The constructor accepts an integer address, or a string.

answered Feb 5, 2016 at 22:41
Sign up to request clarification or add additional context in comments.

1 Comment

Thank you very much for your hint!

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.