2011-02-03 14 views
0

私はPython Picasa APIを使用して、すべての連絡先から最新の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] 

このリクエストは、平均で(ローカルWebサーバー上で)8秒かかります。どのように私はこれを最適化できますか?最長の呼び出しは、2つのforループがネストされている部分です。

答えて

1

最初のユーザーから20枚の写真を取得した後、各ユーザーごとに最新の写真を1枚だけ取得できます。それが最新の20の最新のものであれば、もう少し増やしてください(新しいものがなくなるまで)。そうでない場合は、すぐに次の連絡先に移動します。

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

関連する問題