如何在Python中使用多处理生成大型语料库的tfdf?

2024-09-25 08:27:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我想为一个大型语料库生成术语频率和文档频率。有一些图书馆在这样做,但它们没有我想要的那么灵活。这是我目前正在做的,但只有一个过程。如何使用多处理来加速此练习?谢谢您!你知道吗

#txtfiles is a list of file paths

def get_tf_df(txtfiles, tf_dict, df_dict):

    for txtfile in txtfiles:
        tokens = get_tokens(txtfile)
        for t in tokens:
            update tf_dict (I know this part) 
            update df_dict (I know this part) 

    return tf_dict, df_dict

Tags: indfforgettfupdatethisdict
1条回答
网友
1楼 · 发布于 2024-09-25 08:27:59

您可以使用pool工作进程和Manager实例来管理对工作进程之间共享的tf_dictdf_dict字典的访问:

import glob
import multiprocessing as mp

from utils import get_tokens, update_tf, update_df, save_dicts

WORKERS = 4

def update_dicts(filename, tf_dict, df_dict):
    tokens = get_tokens(filename)

    for tok in tokens:
        update_tf(tok, tf_dict)
        update_df(tok, df_dict)

def main():
    manager = mp.Manager()

    tf_dict = manager.dict()
    df_dict = manager.dict()

    pool = mp.Pool(WORKERS)

    for filename in glob.glob('/path/to/texts/*.txt'):
        pool.apply_async(update_dicts, args=(filename, tf_dict, df_dict))

    pool.close()
    pool.join()

    save_dicts(tf_dict, df_dict)

if __name__ == "__main__":
    main()

相关问题 更多 >