保持对象在python中的另一个程序中使用它们

时间:2014-09-11 08:30:51

标签: python object python-3.x word2vec

我使用word2vec来计算两个单词之间的相似度。因此对于模型我正在使用GoogleNews。 这个模型非常庞大,因此需要花费大量的时间来加载。

model = Word2Vec.load_word2vec_format('D:/Userfiles/vsachidananda/Downloads/GoogleNews-vectors negative300.bin.gz', binary=True)

我想加载它并保存在变量/对象中,这样每当我运行python程序时,我应该只能调用

model.similarity('word1','word2')

如何实现这一目标?有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我知道在Python进程之间共享复杂对象的唯一方法是使用multiprocessing.Manager。 但是每次需要与子流程共享时,model都会腌制 unxled 。我想这会和load_word2vec_format一样慢。

您可以改为运行一次加载model的启动器,然后等待并按需执行另一个python脚本。一个非常简单的启动器看起来像这样:

import Word2Vec
model = Word2Vec.load_word2vec_format(...)

try:
    import traceback
    import script

    while True:
        raw_input()

        try:
            reload(script)
            script.main(model)
        except:
            print traceback.print_exc()

except KeyboardInterrupt:
    print 'exit launcher'

使用此基本启动器,script.py应位于同一文件夹中,需要定义main()

def main(model):
    model.similarity('word1','word2')
    ...