import asyncio
import aiofiles
from collections import Counter
from cppy.cp_util import *

'''
异步指程序运行期间具有挂起，然后等待唤醒，继续执行的能力。
典型应用场景如数据 
①  源源不断产生,比如网络监听； 
② 太大,可能大于内存； 
③ 有连续处理动作，当某一环得到想要结果，立刻终止，后续数据不需要处理 。

本例，读文件的Io还是太快，的爬虫
'''

async def read_file(file_path):
    async with aiofiles.open(file_path, 'r', encoding='utf-8') as file:
        content = await file.read()
    return content

async def count_words(text):
    words = extract_str_words(text.lower())
    word_counts = Counter(words)
    return word_counts

async def main():
    wordfreqs = Counter()
    files =  [ testfilepath  ] * 10
    for thisfile in files:
        text = await read_file( thisfile )
        top_words = await count_words(text)
        wordfreqs += top_words
    for word, count in wordfreqs.most_common(10):
        print(f"{word}: {count//10}")   # 突出 Io 的提升价值


# 运行异步主函数
asyncio.run(main())