Использование многопроцессорной оперативной памяти Python - PullRequest
0 голосов
/ 26 августа 2018

Я пытаюсь измерить сходства между 10K парами документов, используя функцию сходства Spacy.

Однако, поскольку каждый документ довольно большой, каждый расчет сходства занимает много времени.Поэтому я рассматриваю возможность использования многопроцессорного модуля с наймом более 2 рабочих.

У меня вопрос, будет ли одновременно использоваться N процессов, требуется ли в N раз больше использования ОЗУ?Если да, то есть ли способ заставить эти N процессоров использовать один и тот же (?) SPACY-модуль, загруженный в ОЗУ?

Согласно тому, что я заметил, моя среда (16 ГБ ОЗУ) не способнавыполнение 2 (нескольких) процессоров (около 5 ГБ при выполнении сценария с одним процессором) одновременно.

Ниже приведена сокращенная версия моих кодов:

import multiprocessing
import os
from difflib import SequenceMatcher
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.metrics.pairwise import cosine_similarity
import spacy
import logging
import pickle
import datetime
from datetime import date

def measure_similarity(doc_pairs_queue, results_queue):
    code that measure sim using spacy and other modules

def load_files(doc_pairs, loaded_pairs_queue):
    code that loads files
if __name__ == "__main__":
    doc_pairs = pickle.load (~~~)
    loaded_pairs_queue = multiprocessing.Queue(maxsize=100)
    loader = multiprocessing.Process(target=load_files, args=(doc_pairs, loaded_pairs_queue))
    loader.start()
    results_queue = multiprocessing.Queue(maxsize=1000)
    worker_count = N
    workers = []  # create list of workers, so we can terminate them later
    for i in range(worker_count):
        worker = multiprocessing.Process(target=measure_similarity, args=(loaded_pairs_queue, results_queue))
        worker.start()
        workers.append(worker)
    while some_index < len(doc_pairs):
        res = results_queue.get(timeout = 600)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...