Python 完整的分析过程,用于处理日志文件集合的analysis()
复合函数如下所示:
def analysis(filename: str) -> Dict[str, int]:
"""Count book chapters in a given log"""
details = path_filter(
access_detail_iter(
access_iter(
local_gzip(filename))))
books = book_filter(details)
totals = reduce_book_total(books)
return totals
函数analysis()
使用local_gzip()
函数来处理单个文件名或文件模式。它运用一组标准的解析函数path_filter()
、access_detail_iter()
和access_iter()
等创建了一个可迭代的AccessDetails
对象序列。随后它将分析过滤器和归约器应用于该AccessDetails
对象序列。结果是一个可以显示特定路径访问频次的Counter
对象。
将这个特定的数据集合保存为了.gzip
格式的日志文件,总数据量约为51MB。如果用该函数串行处理这些文件,耗时超过140秒。能否通过并发处理来获得更好的效果呢?