-1
我有一本作者词典,每个作者是一本书的字典,每本书都是一个单词列表。嵌套字典和多处理
我需要一个多处理场景,其中每个进程都处理某个作者的某本书。
我尝试使用manager.dict()
和manager.list()
来实例化字典和列表,但我的字典仍没有得到填充。
这是主要字典对象的声明方式。
import multiprocessing
from multiprocessing import Manager
manager = Manager()
allWords = manager.dict()
然后有一个功能read_author
它执行任务distribtion
def read_author(author):
global allWords
allWords[author] = manager.dict() # each author is a dictionary of books
jobs = []
for f in os.listdir(auth_dir):
p = multiprocessing.Process(target=read_doc, args=(author, auth_dir, f,))
jobs.append(p)
p.start()
return jobs
这是使我处理的功能。
def read_doc(author_name, author_dir, doc_name):
global allWords
allWords[author_name][doc_name] = manager.list()
# document is loaded in the variable doc and it has a set of words
for word in doc.words:
allWords[author_name][doc_name].append(word)
文档从项目Gutenberg txt文件和上述doc
目的是使用spacy
构造的语法树。
read_doc
实际上涉及到文件树的解析和提取以及bigrams的计数。为了简洁起见,我在代码示例中跳过了这些部分,但这是计数任务,我想分割多个CPU核心,这就是为什么我使用多处理。
你的代码在哪里? –
尝试编写一个显示您正在运行的问题的[MCVE] – pvg
@PedroLobito我添加了一些代码。你能再看看吗? – Vahid