将Python对象放入共享内存
有没有一个Python模块可以让我把一些复杂的用户自定义类放到共享内存里?
我的意思是直接在共享内存中分配,而不是先把它们序列化(也就是转成一种可以存储的格式)再存进去。
multiprocessing.Value
和 multiprocessing.Array
对我来说不太合适,因为它们似乎只支持基本数据类型和这些类型的数组。
到目前为止,我找到的唯一一个是POSH,但是它已经八年没有更新了。这让我觉得它要么非常稳定,要么就是过时了。在我花时间去尝试让它工作之前,我想知道有没有我还没发现的其他选择。
我只需要在Linux上使用这个功能。
1 个回答
1
这个问题有点棘手。我想到的最好解决办法是把你的对象进行“序列化”,然后使用 c_char_p,配合 multiprocessing.sharedctypes。不过,你还得确保在 c_char_p 中没有出现空字节,要么通过转义处理,要么转换成十六进制。
再想想,或许你可以考虑使用 POSH。