Я использую многопроцессорность в своей программе парсинга Python для оптимизации скорости. Однако для запуска этой программы требуется 30 секунд c, поэтому я заглянул «под капот» и обнаружил, что фактические процессы занимают всего 4,5 секунды c. Таким образом, переход от 1 ядра к 5 ядрам занимает 25 сек. c?
mp_start_time = time.time()
with mp.Pool() as pool:
output = pool.map(
self.parallel_process,
[(
link,
question,
25,
crawler.webcrawler,
self.translator,
) for link in links]
)
print('Multiprocesses time:', time.time() - mp_start_time)
Многопроцессорная функция
def parallel_process(self, inputs):
# Inputs: Must be a dict of all inputs cuz multiprocessing only allows one input
mli_start_time = time.time()
# Variables
link = inputs[0]
question = inputs[1]
n_sentences = inputs[2]
# Modules
webcrawler = inputs[3]
translator = inputs[4]
question_answering = inputs[5]
print('ml init time',time.time() - mli_start_time)
# Crawl the website
# Question is used to rank the sentences
wc_start_time = time.time()
webdata = webcrawler(link, question, n_sentences)
print('crawler time:', time.time() - wc_start_time)
# Translate into English so our ML engine understands the text
# Automatically detect language and translates into english
webdata_english = translator.translate(webdata, dest='en').text
return webdata_english
Так ли это на самом деле или происходит что-то еще, и как Починить?