Самый эффективный способ итерации по сравнению с большими (20 000+ предметов) Список Python

StackOverflow https://stackoverflow.com//questions/22081153

Вопрос

У меня есть набор данных Twitter, которые я добрался, используя Tweepy Python Library.Однако я быстро понимаю, что я не собрал все необходимые данные.Теперь я делаю сейчас, извлекает Tweet ID из этого нечипового набора данных, сохраняя их в списке, а затем итерацию по поводу этого списка для отправки каждого Tweet ID в качестве запроса в API Twitter.Я хотел бы добавить каждый возвращенный статус Twitter в качестве объекта JSON / Python Dict в списке.Я хотел бы затем написать их в плоский файл или MongoDB (предполагая, что я могу своевременно узнать последнее).Я пытался с чем-то в следующий код:

long_list = [id1, id2, id3, id4 .... id20000]
status_list = []

for i in long_list:
    try:
        tweet = api.get_status(i)
        status_list.append(tweet._payload)
    except:
        pass
.

Однако вышеуказанный код, кажется, время, и мой интерпретатор Python становится не отвечает почти сразу после этого выполнения.Я думаю, что должен быть более эффективный способ сделать это, но я понятия не имею, что это может быть.Любая помощь была бы небещено ценится.

Это было полезно?

Решение

Вы уверены, что это ваш список списков, который заставляет его медленно, а не API, который вы позвонили?Чтобы проверить производительность, вы можете попробовать Профиль it , и есть графические инструменты, такие как runsnakerun

Один простой способ проверить, находится ли ваш код в середине чего-то, это что-то печатать, Как:

print 'getting status from tweet'
tweet = api.get_status(i)
print 'appending to my list'
status_list.append(tweet._payload)
.

Или вы можете использовать Регистрация модуль, который обрабатывает хорошие вещи для вас.

import logging
FORMAT = '%(asctime)-15s %(clientip)s %(user)-8s %(message)s'
logging.basicConfig(format=FORMAT)
logging.info('getting status from tweet')
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top