我创建了一个天真的贝叶斯分类器,并使用泡菜来存储它 现在,每当我执行我的脚本时,pickle都会加载大约10-14秒 有什么方法可以让我的pickle对象加载到ram中并可以从另一个脚本访问它吗?
def load_classifier(self):
f=open("segment_to_topic.pickle","rb")
classifier=pickle.load(f)
f.close()
return classifier
答案 0 :(得分:0)
您可以使用命名管道。 UNIX有os.mkfifo
,windows替代版可能是win32pipe.CreateNamedPipe
。
UNIX解决方案是这样的:
<强> a.py 强>
import os
import pickle
obj = {1:2, 3:4} # any object
fname = "segment_to_topic.pickle"
os.mkfifo(fname)
with open(fname, 'w') as f:
pickle.dump(obj, f)
<强> b.py 强>
import pickle
while True:
try:
with open('segment_to_topic.pickle','r') as f:
print pickle.load(f)
except:
pass
然后你跑:
python ./b.py &
python ./a.py
b.py
打印结果:
{1: 2, 3: 4}
如果您使用的是Windows,this可能会有帮助。
如果脚本都在python中,另一种解决方案是将第二个脚本作为新线程(或进程)从第一个脚本运行。线程可以在Queue对象中共享内存。