Написал небольшой парсер с использованием модуля threadings. Проблема в том, что в моём случае многопоточность не уменьшает время работы скрипта.
Как видите, у меня после запуска очередного потока скрипт ждёт его завершения и только потом переходит к запуску следующего потока. Подскажите пожалуйста как исправить это.
import requests
from bs4 import BeautifulSoup
import threading
personal_pages_paths = []
domain = 'https://vk.com'
search_host = 'https://vk.com/people/'
lastnames = [
'Иванов',
'Петров',
'Сидоров',
'Козлов',
'Смирнов',
'Михайлов',
'Соколов',
'Кузнецов',
'Попов',
'Лебедев',
'Волков',
'Морозов',
'Новиков',
]
def get_personal_page_paths(html_text):
paths = []
soup = BeautifulSoup(html_text, 'lxml')
link_obj = soup.find('div', {'class': 'results'}).find_all('a', {'class': 'search_item'})
for path in link_obj:
paths.append(path['href'])
return paths
def recieve_page_html(lastname_page):
with requests.Session() as session:
html = session.get(lastname_page)
lastname_paths = get_personal_page_paths(html.text)
personal_pages_paths.extend(lastname_paths)
def main():
for lastname in lastnames:
lastname_page = search_host + lastname
lastname_paths = []
paths = threading.Thread(target=recieve_page_html, args=(lastname_page,))
paths.start()
paths.join()
print('PATHS:', personal_pages_paths)
print('\n LENGTH: ', len(personal_pages_paths))
if __name__ == "__main__":
main()