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

Man*_*aux 4 python synchronization multiprocessing

我正在尝试在我的Python进程之间使用共享的字符串变量,但是由于获取了核心转储和无效的内存值,看来我做错了什么。

multiprocessing.Value用来创建一个ctypes.c_char_p值,并使用value属性来访问它。在我对Python文档的理解中,值属性应该是同步的,只要它是的实例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()
Run Code Online (Sandbox Code Playgroud)

Jan*_*rny 5

我认为问题可能是由于使用Value(c_char_p)保留字符串值引起的。如果您想要一个字符串,则应该只使用multiprocessing.Array(c_char)