如何进行线程安全的python XML验证?

时间:2015-01-07 16:38:27

标签: python xml multithreading validation lxml

使用Python 3.3,我需要针对其DTD或XSD验证XML文档,并且我希望针对每个规范验证许多文档。我将有一个执行验证的多线程应用程序。 lxml documentation解释了如何针对每种规范类型进行验证。

Lxml在规范本身的数组中记录验证错误,因此我需要为我执行的每个验证生成一个新的规范副本。

每次重新解析DTD规范是不可能的(线程安全的)因为我的DTD包含其他文件,我发现有必要将目录更改为包含DTD文件的文件夹以获取lxml来查找它们。我不能做一个线程安全的CD,所以我在应用程序启动时阅读了所有规范。

不需要重新解析(XSD或DTD)规范,因为它需要I / O时间和解析时间。

我对规范(DTD和XMLSchema对象)的复制和深度复制的尝试彻底失败了。

有没有办法让lxml安全验证?是否有更好的库可以支持XSD和DTD,让我检查线程安全的错误?

1 个答案:

答案 0 :(得分:2)

在linux上,分叉进程获取父内存的写时复制视图。您可以利用它来处理大型对象,只需很少的开销,而无需更改父级内存空间中的对象。创建对象后,创建用于通信的管道并分叉子进行工作。 multiprocessing模块的Process课程可以帮助您完成繁重的任务。