我正在尝试在我的Python进程之间使用共享字符串变量,但似乎我做错了,因为我得到了coredumps和无效的内存值.
我使用multiprocessing.Value创建一个ctypes.c_char_p值并使用value属性来访问它.在我对Python文档的理解中,value属性应该是同步的,只要它是Value的一个实例(与RawValue的实例相反).到目前为止这是正确的吗?
我创建了一个简短的例子来演示我对Value的使用并在执行时显示不一致:
from multiprocessing import Process, Value
from ctypes import c_char_p
def process(v):
while True:
val = v.value
print val
while val == v.value:
pass
v = Value(c_char_p, None)
p = Process(target=process, args=(v,))
p.start()
for i in range(1,999):
v.value = str(i)
p.terminate()
解决方法:
我认为问题可能是由于使用Value(c_char_p)来保存字符串值.如果你想要一个字符串,你应该只使用multiprocessing.Array(c_char).