2024-06-05 23:00:11 发布
网友
这是我的for循环。运行100000次迭代需要很长时间。在
for urlt in xrange(0, len(clean_url_data)): website_title.append(urlt) website_title[urlt]=g.extract(clean_url_data[urlt]).title print urlt
与其使用website_title.append(urlt)扩展website_title列表,然后立即用标题数据覆盖urlt项,不如直接将标题数据追加到列表中。在
website_title.append(urlt)
website_title
urlt
另外,最好直接在clean_url_data列表上迭代,而不是使用整数循环来索引clean_url_data。如果需要索引,可以使用enumerate。像这样:
clean_url_data
enumerate
website_title = [] for i, url in enumerate(clean_url_data): website_title.append(g.extract(url).title) print i
如果你真的不需要这个索引,你可以让事情变得更简单。下面是一种使用列表理解的方法,它比在循环中使用append要快一些。在
list comprehension使用一个特殊的list_APPEND字节码,它基本上是一个运算符,因此它比查找列表的.append方法快;调用Python函数比执行操作符相对较慢。在
.append
正如galaxyan提到的,您可以使用多处理来实现这一点。下面是一个示例片段:
def clean(url): return {'url': url, 'title': g.extract(url).title} from multiprocessing import Pool pool = Pool() website_info = pool.map(clean, clean_url_data)
请尝试比较range(),xrange(),map()。g.extract可能会花费您的时间。在
g.extract
def set_website_title(urlt): if urlt not in website_title: website_title.append(urlt) website_title[urlt] = g.extract(clean_url_data[urlt]).title print urlt if __name__ == "__main__": map(set_website_title, clean_url_data)
与其使用
website_title.append(urlt)
扩展website_title
列表,然后立即用标题数据覆盖urlt
项,不如直接将标题数据追加到列表中。在另外,最好直接在
clean_url_data
列表上迭代,而不是使用整数循环来索引clean_url_data
。如果需要索引,可以使用enumerate
。像这样:如果你真的不需要这个索引,你可以让事情变得更简单。下面是一种使用列表理解的方法,它比在循环中使用append要快一些。在
^{pr2}$list comprehension使用一个特殊的list_APPEND字节码,它基本上是一个运算符,因此它比查找列表的
.append
方法快;调用Python函数比执行操作符相对较慢。在正如galaxyan提到的,您可以使用多处理来实现这一点。下面是一个示例片段:
请尝试比较range(),xrange(),map()。
g.extract
可能会花费您的时间。在相关问题 更多 >
编程相关推荐