Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 如何在进程池之间共享pexpect实例?_Python 2.7_Python Multiprocessing_Pexpect - Fatal编程技术网

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 \

我有一个工作的Python(2.7)脚本,它通过pexpect模块与
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

我只是在想这基本上是不可能的,还是真的可以做到