我正在使用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秒(在本地网络服务器上)。我怎么能优化这个?最长的调用是两个for循环嵌套的部分..
答案 0 :(得分:1)
您可以从第一个用户那里获得20张照片,然后在每个用户之后,首先获取最近的一张照片。如果这个最近已经足够在最近的20个,那就多得多(直到它们不再足够新)。如果没有,请立即转到下一个联系人。
如果您不太关心每次最近20次,您也可以缓存结果,偶尔检查每个联系人,看看他们是否添加了新照片。