Python 从外部运行进程中酸洗对象
假设有一个对象在循环上运行。我希望能够从另一个已经运行的模块中获取这个对象的当前状态。 让我举一个愚蠢的例子来说明我的问题。 例如,假设这是我正在运行的模块: 工艺流程_a.pyPython 从外部运行进程中酸洗对象,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
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它的内容,但我不确定这样做是否安全。