我有一个查找对象,特别是来自gensim.models.keyedvectors.Word2VecKeyedVectors
的预训练word2vec模型。我需要做一些数据预处理,我正在使用多处理相同的。是否有一种方法,在我所有的进程可以使用对象从相同的内存位置,而不是每个进程加载对象到自己的内存?
可以,如果:
- 文件使用Gensim内部的
.save()
方法保存,相关的大数组向量明显是单独的.npy
文件 - 文件使用Gensim的内部
.load()
方法加载,带有mmap
选项 - 你避免做任何无意中导致每个进程的对象完全重新分配后备数组的操作(破坏映射共享)。
请参阅前面的回答,了解类似需求的步骤/关注点的概述。
(关注&这里列出了避免破坏地图共享的额外步骤-通过执行norm
属性的手动补丁-在Gensim 4.0.0中不再需要,目前仅作为预发布版本可用。
是的,这里有两个选项:
- 你可以使用multiprocessing
- 或者你可以使用Ray