2011-02-03 82 views
0

我使用了Python的Picasa API从所有我的联系人(所以只有20张,最近的)最近的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] 

该请求平均需要8秒(在本地网络服务器上)。我怎么能优化这个?最长的通话是在两个for循环嵌套的一部分。这

回答

1

你可以得到来自第一用户的20张照片,然后对后每个用户,通过获得只是一个最新的照片开始。如果这是最近足以成为在最近的20,得到一些更多的(直到他们不再够新)。如果没有,继续前进到下一个马上联络。

如果你不是太在意永远不必每次都正好最近的20,你也可以缓存结果,并偶尔检查每个接触,看看他们是否已经添加了新的照片。