2011-02-03 3 views
0

Я использую Python API Picasa для получения 20 последних фотографий из всех моих контактов (так что всего 20 фотографий, самые последние). Я закодировал это на Python, но очень-очень медленно. Это тоже не оптимизировано, потому что я получаю 20 фотографий за контакт (и всего лишь 20 фотографий).Picasa Python API: недавно загруженные фотографии со всех контактов

def getRecentPhotos(self, user='default', limit='20'): 
    users = self.getContactIDs(user) 
    photos_tmp = [] 
    photos = [] 
    for user in users: 
     photos_tmp = self.getRecentPhotosByUser(user) 
     for photo in photos_tmp.entry: 
      photos.append(photo) 
    photos_sorted = sorted(photos, key=lambda photo: photo.timestamp.text, reverse=True) 
    return photos_sorted[:20] 

Этот запрос занимает в среднем 8 секунд (на локальном веб-сервере). Как я могу это оптимизировать? Самый длинный вызов - это часть, в которой две петли вложены.

ответ

1

Вы можете получить 20 фотографий от первого пользователя, затем для каждого пользователя после этого начните с получения только одной последней фотографии. Если это достаточно недавно, чтобы быть в последних 20, получите еще несколько (пока они уже не будут достаточно новыми). Если нет, немедленно переходите к следующему контакту.

Если вы не слишком беспокоитесь о том, чтобы всегда иметь самые последние 20 каждый раз, вы также можете кэшировать результаты и спорадически проверять каждый контакт, чтобы увидеть, добавили ли они новые фотографии.

 Смежные вопросы

  • Нет связанных вопросов^_^