Как получить большой объем данных как можно быстрее - PullRequest
0 голосов
/ 16 марта 2020

Я пытаюсь вернуть массив сконструированных объектов, созданных поверх объектов, которые я извлекаю из некоторого URL-адреса, а также из других полей, которые я получаю из другого URL-адреса. У меня есть массив, который состоит из двух массивов, каждый из которых имеет около 8000 объектов ... Я пытался сделать каждый объект строительства в виде потока, однако это все еще занимает много времени ... Любое решение? Вот мой код:

def get_all_players_full_data(ea_players_json):
    all = []
    ea_players_json = list(ea_players_json.values())
    for i in range(len(ea_players_json)):
        for player_obj in ea_players_json[i]:
            all.append(player_obj)

     for player_obj in range(len(all)):
        all_data = []
        with concurrent.futures.ThreadPoolExecutor(len(all)) as executor:
            for player_data in all:
                future = executor.submit(build_full_player_data_obj, player_data)
                print(future.result())
                all_data.append(future.result())

def build_full_player_data_obj(ea_player_data):
    if ea_player_data.get("c") is not None:
        player_full_name = ea_player_data.get("c")
    else:
        player_full_name = ea_player_data.get("f") + " " + ea_player_data.get("l")
    player_id = ea_player_data.get("id")
    # go to futhead to find all cards of that player
    futhead_url_player_data = f'{FUTHEAD_PLAYER}{player_full_name}'
    details_of_specific_player = json.loads(requests.get(futhead_url_player_data).content)

    cards_from_the_same_id = []
    for player_in_json_futhead in details_of_specific_player:
        if player_in_json_futhead["player_id"] == player_id:
            rating = player_in_json_futhead["rating"]
            specific_card_id = player_in_json_futhead["def_id"]
            revision = player_in_json_futhead["revision_type"]
            name = player_in_json_futhead["full_name"]
            nation = player_in_json_futhead["nation_name"]
            position = player_in_json_futhead["position"]
            club = player_in_json_futhead["club_name"]
            cards_from_the_same_id.append(Player(specific_card_id, name, rating, revision, nation, 
            position, club))
     return cards_from_the_same_id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...