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 秒(在本地网络服务器上)。我该如何优化呢?最长的调用是两个 for 循环嵌套的部分。

4

1 回答 1

1

您可以从第一个用户那里获得 20 张照片,然后对于之后的每个用户,首先只获得一张最近的照片。如果这足够近到最近的 20 个,那就再买一些(直到它们不再足够新)。如果没有,请立即转到下一个联系人。

如果您不太担心每次总是恰好有最近的 20 张照片,您还可以缓存结果,并偶尔检查每个联系人以查看他们是否添加了新照片。

于 2011-02-03T22:47:31.117 回答