Проблема при сохранении данных через Pool.map
Как я понял после выполнения функции сохраняется только те данные которые идут от 1 процесса, а второй процесс не сохраняет данные.
import csv
import json
import time
from selenium import webdriver
from bs4 import BeautifulSoup as bs
from fake_useragent import UserAgent
from multiprocessing import Pool, cpu_count
All_players_list = list()
time_speed = time.time()
ua = UserAgent()
options = webdriver.ChromeOptions()
options.add_argument('--disable-blink-features=AutomationControlled')
options.headless = True
options.add_argument(f'user-agent={ua.random}')
with open('Test[2].csv', 'w', encoding='utf-8') as file:
pass
with open('help_poop.html', 'r', encoding='utf-8') as file:
All_clans = json.load(file)
def entry(players) -> dict:
with open('Test[2].csv', 'a', encoding='utf-8') as file:
writer = csv.writer(file)
for keys, values in players.items():
writer.writerow((keys, values))
def Parsing(url):
time_speed_def = time.time()
driver = webdriver.Chrome(executable_path=r'C:\Users\Костьян\Desktop\Projects\SELENIUM AND BS4\chromedriver.exe', options=options)
try:
driver.get(url)
time.sleep(1)
Website_code = driver.page_source
Code_Website = bs(Website_code, 'lxml')
driver.close()
driver.quit()
All_players = Code_Website.find(id='clanplayers').find('tbody').find_all('tr', role='row')
sorted_players_statistics = {}
for players_statistics in All_players:
player_statistic = players_statistics.find_all('td')
if int(player_statistic[3].text.replace(' ', '')) < 16001:
sorted_players_statistics[player_statistic[3].text.replace(' ', '')] = player_statistic[2].text
else:
entry(sorted_players_statistics)
break
print(f'Данные были скопированны с сайта[{url}] за {int(time.time()-time_speed_def)} секунд', f'№{All_clans.index(url)+1}')
except Exception as ex:
print(ex)
if __name__ == '__main__':
with Pool(2) as p:
p.starmap(Parsing, All_clans[0:5])
print('Программа закончила свою работу за', int(time.time()-time_speed), 'секунд')