Не получается разделить собранные данные с with Pool

help me pls

Новичок
Пользователь
Мар 8, 2022
2
0
1
Я многопоточно собираю все языки на которых программировали определенные пользователи, и когда добавляю в список эти языки, тогда языки от одного пользователя попадают к другому пользователю. Пример(пользователь 1 пишет на языках;(Язык 1, язык 2)) и (пользователь 2 пишет на языках;(Язык 3, язык 4) и должно так же выводить, а выводит (пользователь 1 пишет на языках;(Язык 1, язык 2)) и (пользователь 2 пишет на языках;(Язык 1, язык 2,Язык 3, язык 4) Есть идеи как разделить данные?

Python:
import multiprocessing
from bs4 import BeautifulSoup
import re
from array import *
from multiprocessing.dummy import Pool
import requests
from urllib.parse import urljoin
import math as m
import fake_useragent

url_git = 'https://github.com/'
url_reposit = '?tab=repositories'
star = 'stargazers'
page = '?page='

star_user = ['m','MNYudina','Robingood43']    
info_userov = []

def search(qi):
    global url_git,url_reposit,reposit_star  
    language_user_star = []
    reposit_star = []
 
    user = fake_useragent.UserAgent().random
    header = {
      'User-Agent': user,
      'upgrade-insecure-requests': '1',
      'cookie': 'mos_id=CllGxlx+PS20pAxcIuDnAgA=; session-cookie=158b36ec3ea4f5484054ad1fd21407333c874ef0fa4f0c8e34387efd5464a1e9500e2277b0367d71a273e5b46fa0869a; NSC_WBS-QUBG-jo-nptsv-WT-443=ffffffff0951e23245525d5f4f58455e445a4a423660; rheftjdd=rheftjddVal; _ym_uid=1552395093355938562; _ym_d=1552395093; _ym_isad=2'
      }
    col_vo_reposit_star = ""

    full_url_reposit_star = f'{url_git}{qi}{url_reposit}'

    html_github12 = BeautifulSoup(requests.get(full_url_reposit_star, headers = header).text,'lxml')

    print(full_url_reposit_star)

    f2 = html_github12.find('span',{'class': 'Counter'}).attrs['title']
    col_vo_reposit_star = f2.replace(',', '')

    all_page = m.ceil(int(col_vo_reposit_star)/30)

    for col_str_reposit_star in  range(all_page):
                    html_github13 = BeautifulSoup(requests.get(full_url_reposit_star, headers = header).text,'lxml')
                    for j in html_github13.find_all('a', {'itemprop': re.compile("name codeRepository.*")}):
                       reposit_star.append(j.get('href'))
                    if col_str_reposit_star == 1:
                        for q in html_github13.findAll('a',{'class': re.compile("btn btn-outline BtnGroup-item.*")}):
                            full_url_reposit_star = q.get("href")
                    else:
                        for z in html_github13.findAll('a',{'class': re.compile("btn btn-outline BtnGroup-item.*")}):
                            full_url_reposit_star = z.get("href")

    for i in reposit_star:
                    reposit = urljoin(url_git,i)
         
                    html_github_reposit12 = BeautifulSoup(requests.get(reposit, headers = header).text,'lxml')

                    for j in html_github_reposit12.find_all('span', {'class': re.compile("color-fg-default text-bold mr-1.*")}):
                        if j.text not in language_user_star:
                            language_user_star.append(j.text)

    info_userov.append([qi,language_user_star])
   
 

 
def main():
    x = multiprocessing.cpu_count()
 
    with Pool(x) as p:
        p.map(search, ((check_reposit) for check_reposit in star_user))

    print(info_userov)

if __name__ == "__main__":
    main()
 
Последнее редактирование:

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Есть идеи как разделить данные?
Данные объединяются потому, что переменная reposit_star у вас в коде объявлена глобальной, если ее сделать локальной данные не будут объединяться:
Python:
global url_git,url_reposit #,reposit_star
 
  • Мне нравится
Реакции: help me pls

help me pls

Новичок
Пользователь
Мар 8, 2022
2
0
1
 

Форум IT Специалистов