Python:如何在脚本的多个调用中共享一个对象实例

我使用一个为外部程序提供python接口的库。 这使我可以创建:

foo = Foo()

上面的代码启动了一个新的Foo程序实例,我可以在python中进行控制。

我有一个需要多次调用的python脚本,并且根据外部参数,告诉外部Foo程序的一个实例做不同的事情。 很明显,我做不到

foo = Foo()每次,

因为每次脚本运行时都会创建一个Foo的新实例。

我想要做的是创建foo= Foo()一次,并让多个调用共享同一个实例。 目前我只想创建一次,序列化它,并让我的脚本反序列化它。 这种方法有效吗? 有更好的选择吗?

谢谢!!


如果您遵循类似于此答案中给出的方法,则可以完成此操作。 或者你可以使用Pyro,它与这个答案中的多处理相比。


你可能会使用泡菜。 这里有一个简单的例子:

import os, pickle

class Foo(object):
    def __init__(self, bar):
        self.bar = bar

# use previous pickled instance if found
if os.path.exists('foo.pickle'):
    with open('foo.pickle') as f:
        foo = pickle.load(f)
else:
    foo = Foo(42)

# print current foo.bar
print foo.bar

# change foo.bar and pickle
foo.bar = raw_input('new bar: ')
with open('foo.pickle', 'w') as f:
    pickle.dump(foo, f)

您可以更改设计,以便Foo()将您连接到现有流程,然后创建一个新函数,将其startFoo() ,您之前调用该函数一次(或者如果Foo()失败)。 更好的做法是让Foo()连接到通过套接字连接的服务的程序。 您可能还想切换到多处理模块。

链接地址: http://www.djcxy.com/p/8113.html

上一篇: Python: how to share an object instance across multiple invocations of a script

下一篇: How to handle the nodejs EMFILE exception without modifying ulimit?