0

Python Picasa APIを使用して、すべての連絡先から最新の20枚の写真を取得しています(つまり、最新の20枚の写真のみ)。これをPythonでコーディングしましたが、非常に遅いです。連絡先ごとに20枚の写真を取得しているため、実際には最適化されていません(合計で20枚の写真のみが必要です)。

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秒かかります(ローカルWebサーバーの場合)。どうすればこれを最適化できますか?最長の呼び出しは、2つのforループがネストされている部分です。

4

1 に答える 1

1

最初のユーザーから20枚の写真を取得し、その後、各ユーザーについて、最新の写真を1枚だけ取得することから始めます。それが最新の20に入るのに十分最近のものである場合は、もう少し取得します(十分に新しくなくなるまで)。そうでない場合は、すぐに次の連絡先に移動してください。

毎回正確に最新の20を常に取得することにあまり関心がない場合は、結果をキャッシュし、各連絡先を散発的にチェックして、新しい写真が追加されているかどうかを確認することもできます。

于 2011-02-03T22:47:31.117 に答える