Python 2.7 如何在进程池之间共享pexpect实例?
我有一个工作的Python(2.7)脚本,它通过pexpect模块与Python 2.7 如何在进程池之间共享pexpect实例?,python-2.7,python-multiprocessing,pexpect,Python 2.7,Python Multiprocessing,Pexpect,我有一个工作的Python(2.7)脚本,它通过pexpect模块与gdb交互通信。但是,它的速度太慢了,我需要使用多处理池来加速它。我找到了一种方法来实现这一点,但在我的实现中,多个进程中的每个进程都必须生成自己的pexpect实例。这似乎是对计算时间的巨大浪费,因为生成每个pexpect实例需要几分钟,而我必须生成数百个实例 而不是这种代表当前程序的流程图 Process A --- pexpect A \
gdb
交互通信。但是,它的速度太慢了,我需要使用多处理池来加速它。我找到了一种方法来实现这一点,但在我的实现中,多个进程中的每个进程都必须生成自己的pexpect实例。这似乎是对计算时间的巨大浪费,因为生成每个pexpect实例需要几分钟,而我必须生成数百个实例
而不是这种代表当前程序的流程图
Process A --- pexpect A
\
\
Process B --- pexpect B --- Main Script
/
/
Process C --- pexpect C
我想要这样的东西:
Process A
\
\
Process B --- global pexpect process -- Main Script
/
/
Process C
我知道在多个进程之间共享对象并不是StackOverflow的新领域,但这些对象基本上是只读的。我认为我的问题与此不同,因为此pexpect实例可能会耗尽虚拟内存,并且偶尔需要重新启动
这意味着共享的pexpect对象需要在多个进程中的每个进程中都是可写的,并且需要告诉多个进程中的每个进程等待pexpect进程完成其重新启动。此外,在重新启动完成后,多个进程中的每个进程都需要能够使用重新启动的版本更新其pexpect实例的副本
坦白说,我不知道这是否可能。我知道,在封面下,Python使用os.fork()
来实现多处理,因此我认为甚至不能构建任意的多个写入程序/多个读取程序共享内存资源。尽管如此,我还是尝试使用“multiprocessing.Manager()”与共享的pexpect对象进行通信,但是当我尝试通过管理器实现通信时,我遇到了一个错误,即pexpect对象无法pickle
我只是在想这基本上是不可能的,还是真的可以做到