multiprocessing MemoryError
phrases = getPhrases(start_phrase_txt)
pool = Pool(processes=3, maxtasksperchild=1000)
for i in range(0, len(phrases)):
pool.apply_async(checkPhrase, args=(phrases[i], phrases[i+1:], i, len(phrases),)).ready()
pool.close()
pool.join()
phrases - определённые строки из текстовика
checkPhrase - функция, открывающая хромдрайвер (headless) и выполняющая в нём определённые действия. Она обёрнута в блок try/except/finally, в конце которого идёт
driver.close()
driver.quit()
return
Однако при, например, i=30 возникает ошибка MemoryError. Как я понимаю, из-за того, что потоки или хромдрайвер не закрываются. Как пофиксить?
Ответы (1 шт):
Автор решения: versetty777
→ Ссылка
Добавьте блок finally, в котором вы закроете драйвер и удалите все его процессы:
def checkPhrase(phrase, phrases, i, total):
try:
# do some actions
except Exception as e:
# handle exception
finally:
driver.close()
driver.quit()
del driver