Python:如何在subprocess.Popen中传递类对象

Python:如何在subprocess.Popen中传递类对象,python,popen,Python,Popen,代码: B.py-B(可执行) A.py-A(可执行) 从子流程导入Popen 类x(): def u u init__;() 通过 def A1(): ------ def A2(): ------ defan(): ------- 对象_x=x() Popen(['B','-class_args','x'])) 我有两个python可执行文件。我在第一个可执行文件中定义了一个类。我已经从中创建了一个对象。我想使用Popen将该对象传递给第二个可执行文件。正如在Popen中一样,我只能传递字

代码: B.py-
B
(可执行)

A.py-
A
(可执行)

从子流程导入Popen
类x():
def u u init__;()
通过
def A1():
------
def A2():
------
defan():
-------
对象_x=x()
Popen(['B','-class_args','x']))

我有两个python可执行文件。我在第一个可执行文件中定义了一个类。我已经从中创建了一个对象。我想使用
Popen
将该对象传递给第二个可执行文件。正如在
Popen
中一样,我只能传递字符串,是否可以传递对象???

UNIX命令行的核心是一个C字符串列表(也就是说,字符串在内存中起始位置后的第一个NUL值处终止)

不能传递无法转换为NUL分隔字符串的内容


这意味着您可以潜在地
pickle
一个Python对象,并
base64
-对结果进行编码(如果您在stdin上传递序列化对象,这样就可以避免base64编码开销,这样就允许使用NUL),然后传递该对象,base64解码并稍后取消对其进行pickle——但在命令行上,它必须是一个没有NUL字符的字符串。

UNIX命令行的核心是一个C字符串列表(也就是说,字符串在内存中起始位置后的第一个NUL值处终止)

不能传递无法转换为NUL分隔字符串的内容


这意味着您可以潜在地
pickle
一个Python对象,并
base64
-对结果进行编码(如果您在stdin上传递序列化对象,这样就可以避免base64编码开销,这样就允许使用NUL),然后传递该对象,base64解码并稍后取消对其进行pickle——但在命令行上,它必须是一个没有NUL字符的字符串。

除了pickle/unpickle还有其他方法吗???
pickle
不是世界上唯一的序列化/反序列化方法,但是你总是在做某种序列化。除了pickle/unpickle还有别的方法吗???
pickle
不是世界上唯一的序列化/反序列化方法,但是你总是在做某种序列化。如果你在写这段代码(其他人已经编写的东西不依赖于在命令行上传递Python对象),为什么不将B用作Python库,而不是外部可执行文件?我不能将其用作库。它是一个已定义的可执行文件。如果它已定义,这是否意味着您不能修改它以在命令行上接受对象(如果有办法的话)?请注意,创建Python可执行文件的传统方法是将其作为具有定义入口点的库,因此您可以将其作为可执行文件运行,也可以将其作为库导入。请看,它可以被修改。我同意我可以将其作为库使用,但我希望将其作为可执行文件使用。如果您有令人信服的理由这样做,它可能是麦汁h讨论它——您可能在这样一个用例中,模块(为您处理所有(反)序列化以及启动和监视子进程的工作)是该工作的正确工具,为什么不将B用作Python库,而不是外部可执行文件?我不能将其用作库。它是一个已定义的可执行文件。如果它已定义,这是否意味着您不能修改它以在命令行上接受对象(如果有办法的话)?请注意,创建Python可执行文件的传统方法是将其作为具有定义入口点的库,因此您可以将其作为可执行文件运行,也可以将其作为库导入。请看,它可以被修改。我同意我可以将其作为库使用,但我希望将其作为可执行文件使用。如果您有令人信服的理由这样做,它可能是麦汁h讨论它——您可能在这样一个用例中,模块(为您处理所有(反)序列化,以及启动和监视子进程的工作)是该工作的正确工具。
Get the object here and call it's functions
from subprocess import Popen

class x():

    def __init__():
        pass
    def A1():
        ------
    def A2():
        ------
    <---------->

    def AN():
       -------

object_x = x()
Popen(['B','-class_args', 'x'])