我有一个代码可以解析大量 XML 文件(使用 xml.sax 库)来提取数据以供将来的机器学习使用。我希望解析部分并行运行(我在服务器上有 24 个内核也做一些 Web 服务,所以我决定使用其中的 20 个)。解析后我想合并结果。下面的代码应该(并且正在做)完全符合我的预期,但是并行的事情存在问题。
def runParse(fname):
parser = make_parser()
handler = MyXMLHandler()
parser.setContentHandler(handler)
parser.parse(fname)
return handler.getResult()
def makeData(flist, tasks=20):
pool = Pool(processes=tasks)
tmp = pool.map(runParse, flist)
for result in tmp:
# and here the merging part
当这部分开始时,它会在 20 个核心上运行一段时间,然后只运行一个,它发生在合并部分之前(当然,它只会在一个核心上运行)。
任何人都可以帮助解决这个问题或提出一种加速程序的方法吗?
谢谢!
呸呸呸