Picasa Python API: 获取所有联系人最近上传的照片
我正在使用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循环嵌套在一起的地方。
1 个回答
1
你可以先从第一个用户那里获取20张照片,然后对于后面的每个用户,先只获取他们最近的一张照片。如果这张照片足够新,能算在最近的20张里,就再获取几张(直到没有新照片为止)。如果这张照片不够新,那就直接跳到下一个联系人。
如果你不太在意每次都要有正好最新的20张照片,你也可以把结果缓存起来,偶尔检查一下每个联系人,看他们有没有上传新照片。