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

如何进行线程安全的python XML验证?,python,xml,multithreading,validation,lxml,Python,Xml,Multithreading,Validation,Lxml,使用Python3.3,我需要根据它们的DTD或XSD验证XML文档,并且我希望根据每个规范验证许多文档。我将有一个多线程应用程序执行验证。解释如何根据每个规范类型进行验证 Lxml在规范本身的数组中记录验证错误,因此我需要为我执行的每个验证提供一份新的规范副本 不可能(线程安全)每次都重新解析DTD规范,因为我的DTD包含其他文件,我发现有必要将目录更改为包含DTD文件的文件夹,以便lxml找到它们。我不能制作线程安全cd,所以我在应用程序启动时阅读了所有规范 不希望重新解析(XSD或DTD)

使用Python3.3,我需要根据它们的DTD或XSD验证XML文档,并且我希望根据每个规范验证许多文档。我将有一个多线程应用程序执行验证。解释如何根据每个规范类型进行验证

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

不可能(线程安全)每次都重新解析DTD规范,因为我的DTD包含其他文件,我发现有必要将目录更改为包含DTD文件的文件夹,以便lxml找到它们。我不能制作线程安全cd,所以我在应用程序启动时阅读了所有规范

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

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


有没有办法让lxml安全地进行验证?是否有更好的库可以使用,既支持XSD又支持DTD,让我检查线程安全的错误?

在linux上,分叉进程在写入时获取父内存的副本视图。您可以利用它以较小的开销处理大型对象,而无需更改父对象内存空间中的对象。创建对象后,创建用于通信的管道,并让子对象来完成这项工作。
多处理
模块的
进程
类可以为您完成繁重的工作。

如果这是linux,您可以在加载DTD/XSD后创建子进程来完成工作。DTD不会被复制,因为子级可以查看父级的内存,但是父级看不到它对DTD所做的任何更改。这很有效!我必须通过管道将返回值发回。谢谢,太好了!我会把它变成答案。