全局变量更新未反映在多处理的父进程中 在多处理中,创建一个新进程会启动一个具有自己的全局状态的单独的Python实例。对子进程中的全局变量进行的修改对父进程不可见。 此问题源于使用多处理在进程之间传输的数据通常是腌制的这一事实。 Pickling 要求对象可序列化,这对于某些对象(如 LORR 实例)可能是不可能的。 要解决此问题,请考虑以下方法: 创建 ctype 对象: 将数据存储在 ctype 对象中并将内存引用传递给子进程。然而,这种方法并不常用,而且可能很复杂。 子类化 LORR: 如果 LORR 是一个类并且可以子类化,则实现 getstate 和 setstate 方法来启用酸洗。不过,这需要深入了解 LORR 的内部结构。 通过队列进行消息传递: 或者,您可以使用队列在进程之间进行通信。不传递 LORR 实例,而是向子进程发送消息来请求特定方法执行。然后,可以通过队列将方法中的数据作为字符串返回。