Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.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 从外部运行进程中酸洗对象_Python_Marshalling_Pickle_Unmarshalling - Fatal编程技术网

Python 从外部运行进程中酸洗对象

Python 从外部运行进程中酸洗对象,python,marshalling,pickle,unmarshalling,Python,Marshalling,Pickle,Unmarshalling,假设有一个对象在循环上运行。我希望能够从另一个已经运行的模块中获取这个对象的当前状态。 让我举一个愚蠢的例子来说明我的问题。 例如,假设这是我正在运行的模块: 工艺流程_a.py import time import random class A(object): def __init__(self): self.random = random.random() def get_time(self): self.time = time.time

假设有一个对象在循环上运行。我希望能够从另一个已经运行的模块中获取这个对象的当前状态。 让我举一个愚蠢的例子来说明我的问题。 例如,假设这是我正在运行的模块:

工艺流程_a.py

import time
import random

class A(object):
    def __init__(self):
        self.random = random.random()

    def get_time(self):
        self.time = time.time()


if __name__ == '__main__':
    a = A()
    a.get_time()
    while True:
        time.sleep(10)
        print a.random

我希望能够从
process_a.py
中获取这个实例
a
,并使用它的
a.random
a.time
属性在另一个进程中使用它们。但是我不能对这个代码做任何修改。否则,我会在
pickle
这个实例中添加一行代码,问题就会得到解决

您是否控制流程的启动?我可以。进程a.py可以由另一个进程启动。这不是一个约束。理论上,您可以运行自己的文件,该文件将通过导入*(或其他等效文件)中的
“窃取”process\u a.py
的内容,并运行自己版本的模块级代码,以及所有必要的挂钩。可能需要一些技巧来使代码相信它实际上是作为顶级模块运行的,但没有什么是可撤销的。我最初的想法更多的是沿着
eval
ing它的内容,但我不确定这样做是否安全。