Python共享字符串内存用于多处理

我正在尝试在我的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).

上一篇:iOS:使用Github托管自己本地的项目代码方式一:(Xcode方式:开发工具Xcode配置Git,由Xcode-->Source Control-->Commit)


下一篇:javascript – 使多个回调与jQuery $.when同步