TypeError:无法腌制CompiledFFI对象

时间:2018-10-08 08:55:49

标签: python-3.x pickle paramiko multiprocess pathos

我正在尝试从Telnet和SSH主机获取某些命令的输出,并将它们存储在架子中。由于命令很多,因此我正在使用多处理。 我有以下重要方法:

  1. connectToHost:使用一种方法建立连接(SSH / Telnet)。
  2. ExecuteCommand:执行命令并获取输出。
  3. main:我在其中遍历所有命令,并使用multiprocessing在字典中获取输出。此方法调用另一个方法,该方法合并其他进程的输出。

对于Telnet,一切正常,但是当它是SSH连接时,我的代码在process.start()处失败,并且出现以下错误。

  

TypeError:无法腌制CompiledFFI对象

为什么即使我调用相同的方法,它也不能用于SSH?该如何解决?

1 个答案:

答案 0 :(得分:0)

启动新进程时,python必须传递该进程使用的所有变量。在这种情况下,它是到某个主机的连接。为此,必须对变量进行序列化(腌)。

paramiko似乎使用FFI不能腌制的对象。

可以通过将多处理更改为多线程(不需要棘手)或通过从一开始就在每个进程中创建ssh连接来解决问题(这可能不太有效)。