首页 > 解决方案 > 使用多处理 python 包发送包含指针的复杂对象

问题描述

我正在尝试解决一个与 python3 多处理包相关的问题。我想在更多进程之间共享复杂对象(即 Z3 SMT 求解器实例)。目前,我尝试了multiprocessing.Queue,multiprocessing.Pipemultiprocessing.Manager。我总是遇到同样的问题:

ValueError: ctypes objects containing pointers cannot be pickled.

这意味着我的 Z3 实例具有包含引用(地址)的属性,在这种情况下,我无法将其发送到另一个进程,因为该地址与另一个进程不同(进程有自己的地址空间)。因此,我尝试取消引用每个属性,但最终以另一个失败告终,其中 z3 SMT 求解器实例的属性没有正确的 ctypes。所以我的问题是。有没有一些好方法可以使用多处理包发送复杂的对象?

标签: python-3.xparallel-processingpython-multiprocessingctypes

解决方案


推荐阅读