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

标签 python xml multithreading validation lxml

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

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

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

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

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

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

最佳答案

在 Linux 上, fork 进程获取父进程内存的写时复制 View 。您可以利用它来处理大对象,而开销很小,并且无需更改父对象内存空间中的对象。创建对象后,创建用于通信的管道并 fork 一个子对象来完成工作。 multiprocessing 模块的 Process 类可以为您完成繁重的工作。

关于python - 如何进行线程安全的 python XML 验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27824160/

相关文章:

python - iloc 和 loc 有何不同?

Python在两个引号之间查找以特定单词开头的行

python - 通过Python多重处理处理字典列表

android - xml文件中的 "android"是什么? Button的定义从何而来?

c++ - 让线程每个周期调用一次init

multithreading - 附近一字节变量的原子写入

python - 使用 cx_Freeze (PYTHON) 时导入模块错误

android - <include> FrameLayout 和 App/Action Bar 碰撞

java - Android TextInput 提示文本颜色

C# 线程 - 锁定对象