【发布时间】:2016-02-05 22:27:59
【问题描述】:
我想在进程之间共享一个包含字符串的列表,但不幸的是我收到错误消息“ValueError: character U+169ea10 is not in range [U+0000; U+10ffff]”。
这是 Python 3 代码:
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
有人知道我做错了什么吗?
问候 强尼
【问题讨论】:
-
如果你正在处理 ctypes,你可以使用字节而不是字符串。
标签: python python-3.x multiprocessing