Python:如何在多个脚本调用中共享对象实例
我在用一个库,这个库可以让我的Python程序和一个外部程序进行交互。这样我就可以创建:
foo = Foo()
上面的代码会启动一个新的Foo程序实例,我可以在Python里面控制它。
我有一个Python脚本需要多次调用,并且根据外部参数,告诉同一个Foo程序实例去做不同的事情。显然,我不能每次都这样写:
foo = Foo()
,
因为这样每次运行我的脚本时,都会创建一个新的Foo实例。
我想做的是只创建一次foo = Foo()
,然后让多个调用共享同一个实例。目前我在考虑只创建一次,然后把它序列化,再让我的脚本反序列化。这个方法可行吗?有没有更好的办法?
谢谢!!
3 个回答
0
你可以调整设计,让 Foo()
只是连接到一个已经存在的进程。然后你可以创建一个新的函数,叫它 startFoo()
,这个函数你只需要调用一次(或者在 Foo()
失败的时候调用)。更好的做法是让 Foo()
连接的程序成为一个服务,通过套接字来连接。你也可以考虑直接使用多进程模块。
0
你可以试试用 pickle。下面是一个简单的例子:
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)