【问题标题】:Serving python objects in memory for other python programs为其他 python 程序提供内存中的 python 对象
【发布时间】:2016-06-07 07:13:53
【问题描述】:

考虑下面的代码,第二行大约需要一分钟才能完成,对于每个程序,我都有下面的行,那么我怎样才能提供 nlp 对象而不是每次都从各种程序中加载它呢?

import spacy
nlp = spacy.load('en')

理想情况下是这样的:

nlp=loadservedobject(url)

nlp 对象大约 > 2GB,因此不寻找序列化解决方案。 我更喜欢提供内存中的 nlp 对象,但不知道如何围绕 python 对象创建服务器?

理想情况下,服务器应该是多线程的。

【问题讨论】:

    标签: python server nlp spacy


    【解决方案1】:

    您要查找的内容称为序列化。用于此的 python 包称为 pickle。您可以在此处找到文档: https://docs.python.org/2/library/pickle.html

    // save.py
    
    // Save a dictionary into a pickle file.
    import pickle
    favorite_color = { "lion": "yellow", "kitty": "red" }
    pickle.dump(favorite_color, open('save.p', 'wb'))
    
    // load.py
    
    // Load the dictionary back from the pickle file.
    import pickle
    favorite_color = pickle.load(open('save.p', 'rb'))
    // favorite_color is now { "lion": "yellow", "kitty": "red" }
    

    【讨论】:

    • 不,它是一个 >2 GB 的大对象,并且在内部该操作仅进行反序列化。
    • @stackit 与 MAP_SHARED
    • @stackit,当然还有允许您共享对象的多进程 API:docs.python.org/2/library/multiprocessing.html
    • 更新相同的答案
    猜你喜欢
    • 1970-01-01
    • 2020-11-20
    • 2020-12-11
    • 1970-01-01
    • 1970-01-01
    • 2021-01-30
    • 2015-03-27
    • 1970-01-01
    • 2015-12-29
    相关资源
    最近更新 更多