无法腌制lxml.etree._Element对象

时间:2019-07-08 23:58:18

标签: python xml multithreading multiprocessing lxml

我一直在尝试编写一种算法,该算法以以下方式运行两个XML文件的差异:

  1. 使用lxml接收2个XML文件和parse them as trees
  2. 将每个XML元素转换为一个节点
  3. 找到未更改,未移动,未更改,已添加/已删除的节点,并以此标签进行标记
  4. 打印出结果(我尚未完成)

我基于Github code建立我的算法,基本上是用我自己的话来重写他的代码以理解它。

我的算法运行完美,但是在大文件(20MB以上)时会阻塞并且需要40分钟的时间(而在17MB文件上则需要2分钟,足够令人沮丧了)。

如果我能够只使用更多的CPU(我的代码使用处理器中所有12.5%的资源),我的算法的执行速度将大大提高。我考虑了多处理,但是遇到了"lxml cannot be pickled (as for now) so it cannot be transferred between processes by multiprocessing package"的问题。我已读完什么是酸洗,但正在努力寻找解决方案。

是否有任何解决方法可以帮助解决我的问题?任何和所有建议将不胜感激! :)

0 个答案:

没有答案